2의 보수 방법에서 양수표현법
1194
작성한 질문수 2
강의에서 설명해주신 2의 보수 방법에서, 양수를 표현하는 방법에 관해 질문이 있습니다. 강의에서 -5를 예로 드신 건 이해했는데, 반대로 5를 표현하려 할 때는 어떻게 되나요?
5를 2진수로 변환->00000101(2)
->보수:11111010(2)
->더하기 1: 11111011(2)
인데, 그럼 양수 5와 음수 -5의 구분이 안 되지 않나요?
강의에서 첫 비트가 1이면 음수, 0이면 양수인 것으로 구분한다고 하셨는데, 8개 비트 앞에 부호에 해당하는 1비트를 더 둔다는 뜻인가요? 그러니까, (1/11111011->-5, 0/11111011->5) 이런 식으로 작동하는 건가요?
좋은 강의 감사합니다.
답변 1
1
안녕하세요, 질문&답변 도우미 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 의 값을 표현하는 것입니다.
즉, 최상위 비트가 부호를 나타내며, 나머지 비트들이 실제 값을 표현합니다.
0
안녕하세요, 질문&답변 도우미 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





