if (!(y&1))
{
c[x++]=d[--y];
}
我无法理解这个声明的作用。y 是一个 int 值。
非(!)标志是什么?
!
转换0
为和其他1
一切0
。
结果y&1
是0
如果最新位y
是0
(即y
的幂2
):
......0
0000001
-------
0000000
相对
......1
0000001
-------
0000001
所以,if
简单的测试如果y
是力量2的倍数。
当数字 y 为偶数时条件为真,当数字 y 为奇数时条件为假。
表达方式
y & 1
表示整数 y 和 1 的按位与。结果实际上等于 y 的最低有效位。奇数将其最后一位设置为 1;对于偶数,最后一位始终为零。
添加一个 NOT !运算符反转该位。