在某些c ++代码中,我看到有人使用像
这样的语句while(a) { //here a is an integer variable
if(a&1) {
//some expression
}
}
现在我的问题是a&1
是什么意思?
答案 0 :(得分:2)
使用按位运算检查数字是否为奇数。二进制数中的最后一位是那个位置(或2 ^ 0位)。所有奇数都会打开这个位;这是他们奇怪的原因。因此,通过检查数字是否有最后一位(这是& 1
的作用),您实际上是在检查它是否为奇数。由于它使用按位运算,因此比使用模2更快。
答案 1 :(得分:2)
此处&
是bitwise AND运算符。
a&1
(或者更确切地说a & 1
)检查a
的LSB是否为SET。