BITWISE运营商使用情况

时间:2013-11-02 15:45:48

标签: c

if (!(y&1))

    {

        c[x++]=d[--y];

    }

我无法理解这句话的作用。 y是一个int值。

什么是不是(!)的标志?

2 个答案:

答案 0 :(得分:2)

!0转换为1,将其他所有内容转换为0

y&1如果0的最新位为y0y的幂,则2会产生......0 0000001 ------- 0000000

......1
0000001
-------
0000001

if

因此,y只测试{{1}}是否为 power 的倍数为2。

答案 1 :(得分:1)

当数字y为偶数时,条件为真,当数字y为奇数时,条件为假。

表达式

y & 1

表示整数y和1的按位AND。结果实际上等于y的最低有效位。奇数的最后一位设置为1;对于偶数,最后一位始终为零。

添加NOT!运算符将该位反转。