2017-09-09 10 views
-3

C의 비트 AND 연산자를 이해하려고합니다. 나는 확실히 내가 컴파일러가비트 AND 연산이 확실하지 않음

#include <stdio.h> 

main() { 
    printf ("%d\n", 1999 & 177); 
    return 0; 
} 
대답은 위의 129입니다

을하고 이해하기 위해 177

나는 손으로이 일을 해요 앞에 0을 넣을 때까지 작동이 내 대답이다 내가 손으로도 할 때

#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 (8 진수) = 127 또는 0x7F입니다.

0x177베이스 16 (16 진수) = 375 10 또는 8 0567.

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