按位AND操作不清楚

时间:2017-09-09 18:14:43

标签: c gcc bitwise-operators bit bitwise-and

我正在尝试理解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吗?

1 个答案:

答案 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