我正在尝试理解C中的按位AND运算符;它一直有效,直到我在177前面放一个0。
我正在手动执行此操作以确保我了解编译器正在执行的操作
#include <stdio.h>
main () {
printf ("%d\n", 1999 & 177);
return 0;
}
上面的答案是129,当我手工完成时,这是我的答案
#include <stdio.h>
main () {
printf ("%d\n", 1999 & 0177);
return 0;
}
上面的编译器给出了答案79,有人可以解释一下如何得到答案79吗?
答案 0 :(得分:3)
177是基数10(十进制)= 0xB1 = 0261 8 。
0177是基数8(八进制)= 127 10 或0x7F。
0x177是基数16(十六进制)= 375 10 或0567 8 。
1999 = 0x07CF = 0000 0111 1100 1111 Binary.
0177 = 0x007F = 0000 0000 0111 1111
& -------------------
0000 0000 0100 1111 = 79