来知道

您的位置: 主页>编程> 位运算一点也看不懂

位运算一点也看不懂

 vovo30434186 

位运算一点也看不懂


什么是位运算呀,就拿 按位与 做例子给我讲一下吧

在网上查了好多资料,都弄不明白。比如下面这个。也是看不懂呀?!


按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。

例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。

  按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为0000000011111111)。 main(){ int a=9,b=5,c; c=a&b; printf("a=%d\nb=%d\nc=%d\n",a,b,c); }


看不懂,哪位大侠给个讲解呀,上例是个什么原理

解决方法



考虑一般逻辑运算,假定1为真 0为假 &为与 |为或
则显然的 有
0&0=0 1&0=0 0&1=0 1&1=1
0|0=0 1|0=1 0|1=1 1|1=1

类似的 !为非 ^为疑惑

则对于任何两个二进制数,将其最低位对齐,最高位不足的补0,然后位对位的进行逻辑运算,得到的结果仍然是一个二进制数,即为位运算

显然 位运算与加法是不同的。例中为了区别位运算和加法而分别列式进行了说明。

例子中已经讲得很明白了。看下面
00001001=》9
&&&&&&&&
00000101=》5
============
00000001
也就是说相同位号的位同时是一时,结果就是一。否则结果就是0。
那一个说9&5可以写成9 5?9 5表示9|5。

数学的加( )运算与计算机的与(&)运算表面好象一样,其实不然!
按位与计算的时候,记住是:1与1得1(不进位),0与1得0,0与0也得0。
加法运算是:1与1得0(要进位),0与1得1(不进位),0与0得0。

上一篇:请高手进来!!!!!    下一篇:向java高手请教

编程相关文章

编程热门文章

编程推荐文章