2017-09-09 49 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