본문 바로가기
C언어/자료형 (숫자,논리,문자)

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

by bigpicture 2022. 7. 8.
반응형

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

$-2^3 \sim 2^3-1$

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

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

결과적으로 맞는 말이긴 한데 정수가 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로 정합니다. 

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

반응형

댓글