当前位置: 代码迷 >> C语言 >> 关于&运算符号,为啥2&5和1&5会是0和1,结果不一样呢?按理说2、5、1都是非0,是属于1的,为什么1&1不是1而是0呢
  详细解决方案

关于&运算符号,为啥2&5和1&5会是0和1,结果不一样呢?按理说2、5、1都是非0,是属于1的,为什么1&1不是1而是0呢

热度:5029   发布时间:2013-02-26 00:00:00.0
关于&运算符号,为什么2&5和1&5会是0和1,结果不一样呢?按理说2、5、1都是非0,是属于1的,为什么1&1不是1而是0呢?
printf("%d",2&5);//0
printf("%d",1&5);//1

关于&运算符号,为什么2&5和1&5会是0和1,结果不一样呢?按理说2、5、1都是非0,是属于1的,为什么1&1不是1而是0呢?

------解决方案--------------------------------------------------------
&是与运算 &&才是你想要的

2的二进制是 010
5的二进制是 101
与运算后是  000


------解决方案--------------------------------------------------------
引用:
&是与运算 &&才是你想要的

2的二进制是 010
5的二进制是 101
与运算后是  000


++ 
是按二进制与的结果啊
------解决方案--------------------------------------------------------
你去看看位运算是怎么回事吧

将10进制的数全部转换为2进制的数后,再进行“与”的操作

而“与”的操作是,若相同位上的数字同为1,则为1,否则为0

0 0 0 1 0 1  //5
0 0 0 0 0 1  //1
------------
0 0 0 0 0 1  //1

这个肯定是1
而这个:

0 0 0 0 0 1  //1
0 0 0 0 0 1  //1
------------
0 0 0 0 0 1  //1

你说的1&1就是这样的,怎么会为0,你逻辑没问题吧?

类似的“与”的运算

0 1 0 1 1 1  //23
0 0 0 1 0 1  //5
------------
0 0 0 1 0 1  //5

这个就是  23&5  的值  为 5
------解决方案--------------------------------------------------------
引用:
printf("%d",2&5);//0
printf("%d",1&5);//1

关于&运算符号,为什么2&5和1&5会是0和1,结果不一样呢?按理说2、5、1都是非0,是属于1的,为什么1&1不是1而是0呢?


逻辑与 与位运算不分啊-.- 2&5是:
1001
0010 肯定是0

1&5
1001
0001 肯定是1

逻辑与的话2个都为正 肯定为正 
  相关解决方案