我正在读一篇关于Java pacman游戏的教程。
下面是有问题的代码。
if (pacmanx % blocksize == 0 && pacmany % blocksize == 0) {
pos = // integer
ch = screendata[pos];
if ((ch & 16) != 0) { // do not understand this.
screendata[pos] = (short)(ch & 15);
...
}我不是真的理解单音&。我知道这个操作数检查if语句的两边,或者是一个按位运算符。然而,根据下面的测试,似乎也不是这样:
if I was to test (ch = 18):
(ch & 16) = 16
(ch & 8) = 0
(ch & 2) = 2谢谢
发布于 2012-09-18 16:34:51
这不是一个布尔and,它总是&&;相反,它是一个按位and。它正在检查是否在ch中设置了右起第五位。
ch = 18 // ch = 0b00010100
ch & 16 // 16 = 0b00010000
// ch & 16 = 0b00010000 != 0
ch & 8 // 8 = 0b00001000
// ch & 8 = 0b00000000 == 0
ch & 2 // 2 = 0b00000010
// ch & 2 = 0b00000010 != 0https://stackoverflow.com/questions/12473131
复制相似问题