读书人

关于amp;运算符号为啥2amp;5和1amp;5会是0和1

发布时间: 2013-02-19 11:11:40 作者: rapoo

关于&运算符号,为什么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个都为正 肯定为正

读书人网 >C语言

热点推荐