我试图理解 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 的吗?
最佳答案
177 是以 10 为底(十进制)= 0xB1 = 02618。
0177 是基数 8(八进制)= 12710 或 0x7F。
0x177 是以 16 为基数(十六进制)= 37510 或 05678。
1999 = 0x07CF = 0000 0111 1100 1111 Binary.
0177 = 0x007F = 0000 0000 0111 1111
& -------------------
0000 0000 0100 1111 = 79
关于c - 按位与运算不清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46133726/