2017-09-09 47 views
-3

我想了解在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?

+2

0177是[八进制文字](https://en.wikipedia.org/wiki/Octal)。 – raina77ow

+0

0上的号码的前缀通常表明的数目是在碱-8。 0117!= 117 – Carcigenicate

+0

许多副本:( –

回答

3

177是基座10(十进制)= 0xB1 = 0261 。

0177是基数8(八进制)= 127 或0x7F。

0x177是基数16(十六进制)= 375 或0567 。

1999 = 0x07CF = 0000 0111 1100 1111 Binary. 
0177 = 0x007F = 0000 0000 0111 1111 
       & ------------------- 
       0000 0000 0100 1111 = 79