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
------解决方案--------------------------------------------------------
++
是按二进制与的结果啊
------解决方案--------------------------------------------------------
你去看看位运算是怎么回事吧
将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
------解决方案--------------------------------------------------------
逻辑与 与位运算不分啊-.- 2&5是:
1001
0010 肯定是0
1&5
1001
0001 肯定是1
逻辑与的话2个都为正 肯定为正