[ComputerScience] 정수의 내부 표현
정수의 내부 표현
정수형 데이터는 컴퓨터 메모리 상에서 고정된 크기의 비트(Bit)로 표현됩니다.
이때, 사용된 n개의 비트로 $2^n$개의 서로 다른 값을 표현할 수 있습니다.
음수를 표현하기 위해 보통 2의 보수(Two’s Complement) 방식을 채택합니다.
정수에는 부호가 있는 정수와 부호가 없는 정수가 있습니다.
부호가 있는 정수
부호가 있는 정수(Signed Integer)는 양수와 음수를 모두 표현할 수 있는 정수입니다.
표현하는 방식으로는 다음과 같습니다.
- 부호 절대값
- 1의 보수
- 2의 보수
예를 들어, 8비트 2의 보수 표현에서는 -128 ~ 127 범위의 정수를 표현할 수 있습니다.
부호 절대값
부호 절대값(Sign-Magnitude)은 가장 왼쪽 비트(MSB, Most Significant Bit)를 부호 비트로 사용하는 방법입니다.
부호 비트가 0인 경우 양수, 1인 경우 음수를 나타냅니다.
부호 비트를 제외한 나머지 비트는 절대값을 이진수로 표현하게 됩니다.
+5
$\rightarrow$ 00000101
-5
$\rightarrow$ 10000101
+0, -0으로 0이 두 개 존재하는 비효율성이 있습니다.
1의 보수
1의 보수(One’s Complement)는 이진수의 모든 비트를 반전시켜 음수를 표현하는 방식입니다.
각 비트를 0은 1로, 1은 0으로 반전시켜 계산합니다.
+5
$\rightarrow$ 00000101
-5
$\rightarrow$ 11111010
부호 절대값과 같이 0이 두 개 존재하며, 덧셈 시 끝에서 올림을 처리해야 합니다.
현재는 거의 사용되지 않습니다.
2의 보수
2의 보수(Two’s Complement)는 양수의 모든 비트를 반전시킨 후 1을 더해 음수를 나타냅니다.
1의 보수를 구한 다음 1을 더한 것과 같습니다.
+5
$\rightarrow$ 00000101
-5
$\rightarrow$ 11111011
현재 가장 널리 쓰이는 방법입니다.
0이 00000000
으로 하나만 존재합니다.
하드웨어에서 뺄셈을 덧셈으로 변환하여 처리할 수 있기 때문에 연산 회로가 단순해집니다.
8비트 기준으로 -128 ~ 127 범위를 표현할 수 있습니다.
부호가 없는 정수
부호가 없는 정수(Unsigned Integer)는 모든 비트를 수의 크기를 표현하는 데 사용합니다.
8비트의 경우 0부터 $2^8 - 1 = 255$까지 즉, 0 ~ 255를 표현할 수 있습니다.
메모리 주소와 비트 마스크 등 음수가 필요 없는 경우에 사용됩니다.
댓글남기기