Processing math: 100%
본문 바로가기
C언어/자료형 (숫자,논리,문자)

[C언어] 정수 표현 범위 쉽게 이해하기 (왜 음수가 더 많나)

by bigpicture 2022. 7. 8.
반응형

4비트로 정수를 표현하면 아래 범위를 표현할 수 있습니다. 

23231

이때 이와 같은 설명을 하는 경우가 있습니다. 

맨 앞은 부호비트이므로, 실제 사용할 수 있는 비트는 3비트이다. 양수는 0을 포함해야 하므로 231 까지 가능하고, 음수는 0을 포함하지 않으므로 23 까지 가능하다. 

결과적으로 맞는 말이긴 한데 정수가 2의 보수법이라는 것을 아는 분들은 위 설명이 바로 와닿지는 않을 겁니다. 여기서는 2의 보수법을 고려하여 위 범위를 설명해보려고 합니다. 2의 보수법이 무엇이지 모르는 분들은 링크 의 글을 먼저 보고오시기 바랍니다. 

아주 단순한 2비트에서 이해해봅시다. 2비트에서 1은 아래와 같습니다. 

01(2)

0은 아래와 같습니다. 

00(2)

이제 2의 보수법으로 -1을 구해봅시다. 01(2)에 1의 보수를 취하여 01(2)으로 만들고 1을 더해줍니다. -1은 아래와 같습니다. 

11(2)

00(2)의 2의 보수를 취하면 00(2)이라서, 더 이상 보수를 취할게 없습니다. 그런데 숫자 하나가 남습니다. 

10(2) 이 남습니다. 10(2) 을 -2로 정합니다. 

정수 범위에서 음수가 하나 더 많은 이유입니다. 

반응형

댓글