黑马程序员技术交流社区
标题:
按位与运算的问题
[打印本页]
作者:
二狗
时间:
2014-4-12 04:16
标题:
按位与运算的问题
本帖最后由 二狗 于 2014-4-12 22:20 编辑
完全听不懂按位与是什么意思。然后后面老师讲的按位与的用处也听不懂,谁能用比较浅显的语言给我解答一下按位与是什么意思有什么用处。
#include <stdio.h>
int main()
{
/*按位与&
10111011
10101101
--------
10101001
1001
0101
----
0001
*/
printf("%d\n",9&5);
return 0;
}
复制代码
作者:
王雪冬
时间:
2014-4-12 06:49
"按位与" 运算符 (&):
如果两个相应的二进制位都为1,则该位的结果为1,否则为0.
例如:
0&0=0 ,0&1=0 ,1&0=0 ,1&1=1
再举个例子:
3&5
------》
00000011 (3)
& 00000101 (5)
----------------------------------
00000001 (1)
作者:
m573555543
时间:
2014-4-12 09:16
按位与容易和逻辑与弄混
按位与&
可以理解成二进制与二进制的比较,
运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
即:两位同时为“1”,结果才为“1”,否则为0
比如
9&5 即 0000 1001 & 0000 0101 = 0000 0001 因此,9&5的值得1
逻辑与&&
&&”(逻辑与)是逻辑运算符。 “逻辑与”相当于生活中说的“并且”,就是两个条件都同时成立的情况下“逻辑与”的运算结果才为“真”。
比如:
(a>3)&&(a<5)
若a是4,先判断左面成立不成立,如果成立,在判断右面成立不成立,如果左右都成立,那么返回值为真也就是数字1,如果不成立,返回0(假)。
值得注意的是。
如果左面的条件不成立,那么就不会进行右面的条件判断。直接返回0(假)
逻辑与结果只讲真和假,而按位与得出的却是实实在在的一个数
作者:
stone24
时间:
2014-4-12 09:40
1. 按位与 &
只有对应的两个二进位都为1时,结果位才为1,否则为0;
应用:1.按位与判断奇偶性,偶数二进制最后一位是0,奇数为1,要判断的数&1,即可判断数的奇偶性。
2.判断二进制数的某一位是1还是0,不是最后一位,先右移到最后一位,再&1。
作者:
haohaoxuexi
时间:
2014-4-12 10:58
#include <stdio.h>
int main()
{
/*按位与&(记住全1为1,否则为0即可)
10111011
10101101
--------
10101001
1001
0101
----
0001
*/
printf("%d\n",9&5);
return 0;
}
复制代码
作者:
星河鹭起
时间:
2014-4-12 10:59
& 就是二进制位数进行比较,如果两个都为真,结果就为真:
1 & 1 = 1
1 & 0 = 0
0&1=0
0&0 = 0
主要不要和逻辑与混淆了 逻辑与是&&
true &&true=true
true&&false=false
false&&false=false
false&&true=false
而且逻辑与只要左边为真,就不会对右边进行判断。
作者:
Freedam
时间:
2014-4-12 21:57
按位与运算简单说就是比较两个数的每一位是不是为真。
通俗点说就是将两个数展开成两个二进制数然后每一位对应按位进行比较,如果对应位都为1则结果位就是1,如果有一个为0就是0。举个例子:
9&5 转化成二进制数为 1001 & 0101
计算过程如下:
1001
& 0101
————
0001
结果为0001就是1.首先9转成二进制数为1001,5转成二进制数为0101。1001的从第一位到第四位为1,0,0,1.0101的从第一位到第四位为0,1,0,1.将0101的第四位1与1001的第四位1进行按位与运算也就是1 & 1结果为1,因为按位与运算就是看两边的结果,都为1则是1,有一个是0就是0.所以1001和0101这两个数的其他位数比较都是0&1或者1&0,有一个0,因此其他位数的结果都为0.(将要进行按位与运算的两个数转成对应的二进制数再算就好理解了)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2