inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

홍정모의 따라하며 배우는 C언어

비트연산자질문입니다

697

작성자 없음

작성한 질문수 0

0

#include<stdio.h>

int main(void)

{

   printf("AND:%8X\n",0x9&0xA);

   printf("OR : %8X\n", 0x9 | 0xA);

   printf(:XOR : %08X\n", 0x9 ^ 0xA);

   printf("NOT : &08X\n", -0x9): 

}

출력값이 

AND : 00000008

OR : 0000000B

XOR : 00000003

NOT : FFFFFF6 

로 나오는데, 이유를 알 수 있을까요 ? 비트연산자 논리연산이 이해가 안가네요 ㅠㅠ 

비트연산자#비트#코딩#c언어#질문 c

답변 1

0

안소

두 가지에 대한 이해가 필요할 것 같습니다.

1️⃣ 첫 번째로 16진수!

비트는 이진수이죠. 0과 1의 값을 가지니까요. 반면 16진수는 0부터 15 (10~15는 ABCDEF 라고 표현하죠) 의 값을 가집니다.

따라서 16진수 한 자리로 이진수 4 자리를 표현할 수 있는거에요! 

예를 들어 11은 10진수로 11 / 16진수로 B / 2진수로 1011 입니다. 즉, B 라는 16진수 하나가 1011  4자리의 비트를 표현할 수 있다고 이해하시면 됩니다.

따라서 0000000B 이 8 자리의 16진수 값은 비트로 표현하면 0000 0000 0000 0000 0000 0000 0000 1011 이런 32자리의 비트와도 같습니다.

2️⃣ 비트 연산에 대한 이해

강의에서 비트 연산자에 대해서 배우셨을 겁니다. 즉, 두 비트끼리 연산을 하는거에요! 

AND, OR 등등 비트 연산자들에 대해선 강의에서 들으셨으리라 생각하고 설명을 생략하겠습니다.

0x9 | 0xA 의 결과가 0000000B 가 되는 이유는

16진수인 0x9 는(앞에 00000 은 생략되고 9 만 나타낸 것입니다.) 32자리 비트로 표현하면 0000 0000 0000 0000 0000 0000 0000 1001 이 됩니다. 

16진수인 0xA 를 32자리 비트로 표현하면 0000 0000 0000 0000 0000 0000 0000 1010 이 됩니다.

0x9 : 0000 0000 0000 0000 0000 0000 0000 1001

0xA : 0000 0000 0000 0000 0000 0000 0000 1010

이렇게 32자리 비트가 각각 있는데요. 자리가 같은 하나의 비트끼리!! 비트 연산을 각각 진행하시면 됩니다.

1011 과 1010 의 OR 연산은 1011 이 되죠? 앞에 많은 00000... 끼리는 어차피 OR 연산해도 0 일것이구요.

따라서 0x9 | 0xA 의 답은 0000 0000 0000 0000 0000 0000 0000 1011 입니다. 이는 16진수로 표현하면 0x0000000B 입니다

나머지도 이런식으로 이해해보시면 됩니다~!

Export template 안됨

1

62

2

완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.

1

88

3

main 함수에서 왜 int만 선언이 되는걸까요

1

78

2

8비트 2진수 변환시 왜 1을 더해야하나요?

1

74

2

혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?

1

77

1

프로토타입과 함수간의 인자 불일치

1

86

2

12.12 헤더 관련 질문

1

74

2

Visual Studio Community 2026 사용 문의

1

167

2

Q. 15:30, 부호가 있는 8비트 정수 질문

1

71

2

getchar(), putchar()

1

110

3

강의자리ㅛ

1

92

2

비주얼스튜디오코드로 공부해도 상관없나요?

1

127

2

소스파일안에 여러 파일

1

87

2

F5와 F7의 차이

1

90

2

c = TWO * (a+b); 에서 a와 b는?

1

67

2

; 세미콜론을 붙이는 기준에 문의

1

78

1

Step over 기능 문의

1

64

2

2.6 강의 따옴표 출력 규칙 문의

1

87

2

int main 함수 관련 오류 문의

1

76

2

13.4 words[0]

0

73

2

11.7 함수를 구현해 봤습니다.

1

67

2

11.6 직접 strcmp와 strncmp를 구현해 보았습니다.

1

71

2

11.6 my_strcat과 my_strncat을 구현해봤습니다.

1

60

2

11.6 fit_str함수를 구현해 봤습니다.

1

58

2