C语言if(i&1==1)问题

发布网友

我来回答

3个回答

热心网友

if(i&1==1) 表示 如果是 奇数 则。。。
i&1 -- 按位与运算,取 2进制整数 i 的最低位,如果最低位是1 则得1,如果最低位是0 则得0。 奇数 i 的最低位 是1,偶数i 的最低位 是0。

i 2进制 &1
0 0000 0000 &1 得0 偶数
1 0000 0001 &1 得1 奇数
2 0000 0010 &1 得0 偶数
3 0000 0011 &1 得1 奇数
4 0000 0100 &1 得0 偶数

if((i&1)==1){} 和 if(i& (1==1) ){} 的结果 一样,表示 如果是 奇数 则执行 {}. 因为 1==1 得 真,真就是 1,然后 i & 1, i奇数得1,i偶数得0。所以 i奇数 执行 {}.

热心网友

i&1=1
1==1
结果为真

热心网友

i与1按位与之后再与1进行比较,比如i=2,则2的二进制代码为假设为8位,0000 0010而1的二进制为0000 00001两个数按位与就是
0000 0010
& 0000 0001
结果 0000 0000
结果i&1为0,然后使用0==1比较,结果为假。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com