inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

1.1 C언어의 탄생

2의 보수 방법에서 양수표현법

1194

vice versa

작성한 질문수 2

1

강의에서 설명해주신 2의 보수 방법에서, 양수를 표현하는 방법에 관해 질문이 있습니다. 강의에서 -5를 예로 드신 건 이해했는데, 반대로 5를 표현하려 할 때는 어떻게 되나요?

5를 2진수로 변환->00000101(2)

->보수:11111010(2)

->더하기 1: 11111011(2)

인데, 그럼 양수 5와 음수 -5의 구분이 안 되지 않나요?

강의에서 첫 비트가 1이면 음수, 0이면 양수인 것으로 구분한다고 하셨는데, 8개 비트 앞에 부호에 해당하는 1비트를 더 둔다는 뜻인가요? 그러니까, (1/11111011->-5, 0/11111011->5) 이런 식으로 작동하는 건가요?

좋은 강의 감사합니다.

c

답변 1

1

Soobak

안녕하세요, 질문&답변 도우미 Soobak 입니다.

 

네, 마지막에 말씀해주신 내용이 맞습니다.

2의 보수 방법을 이용하여 정수를 표현할 때, 실제로 양수와 음수를 구분하는 것은 가장 앞쪽의 비트, 즉, 최상위 비트를 통해 이루어집니다.
최상위 비트가 0 이면 양수, 1 이면 음수로 해석됩니다.

이 때, 양수를 표현할 때는 별도의 보수 과정을 거치지 않고, 직접적으로 2진수로 변환한 값을 사용합니다.

 

예를 들어, 5 를 8비트(편의를 위해) 2진수로 표현하면 다음과 같습니다.

: 0000 0101 , 이 경우, 최상위 비트가 0 이므로 양수로 해석됩니다.

 

반면에, -5 를 8비트 2진수로 표현할 때는 다음과 같이 2의 보수 과정을 거칩니다.

  • 5 의 2진수 표현을 구합니다 : 0000 0101

  • 모든 비트를 반전시킵니다 : 1111 1010

  • 반전된 값에 1 을 더합니다 : 1111 1011

이 경우, 최상위 비트가 1 이므로, 음수로 해석되어 -5 의 값을 표현하는 것입니다.

 

즉, 최상위 비트가 부호를 나타내며, 나머지 비트들이 실제 값을 표현합니다.

 

1

vice versa

감사합니다! 그런데 설명하신 방법대로라면 -5와 1111 1011=251의 구분이 안되는데, 이 문제는 어떻게 해결하는 건가요?

0

Soobak

안녕하세요, 질문&답변 도우미 Soobak 입니다.

 

부호있는 정수 자료형에 담긴 1111 1011 값에 대해서, 최상위 비트1 이므로 음수로 해석하기 위해 2의 보수 과정을 거칩니다.

즉, 111 1011 에 대한 비트 반전 000 0100 이후, 1 을 더하여 0000 0101 이 되고, 이 값은 5 가 됩니다.

이러한 과정을 통해 -5 로 해석됩니다.

 

Export template 안됨

1

26

2

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

1

56

3

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

1

57

2

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

1

55

2

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

1

49

1

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

1

73

2

12.12 헤더 관련 질문

1

60

2

Visual Studio Community 2026 사용 문의

1

138

2

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

1

61

2

getchar(), putchar()

1

94

3

강의자리ㅛ

1

80

2

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

1

114

2

소스파일안에 여러 파일

1

76

2

F5와 F7의 차이

1

79

2

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

1

58

2

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

1

70

1

Step over 기능 문의

1

53

2

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

1

76

2

int main 함수 관련 오류 문의

1

67

2

13.4 words[0]

0

61

2

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

1

62

2

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

1

65

2

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

1

53

2

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

1

54

2