首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

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

热点排行