1. 컴퓨터의 데이터 표현

컴퓨터는 모든 데이터를 2진수로 표현.

한 비트는 0 또는 1을 표현할 수 있고, 이 비트들을 가지고 데이터를 2진수로 표현.



2. 정수의 표현

앞서 말한 이유로, 10진수를 사용하는 인간과 달리 컴퓨터는 2진수로 정수를 표현.

이 때, 먼저 정수를 표현할 데이터의 크기(magnitude)를 먼저 지정해 주어야 함. ex) C언어의 int, short, long (int)

정수에는 양의 정수와 음의 정수가 있는데, 이 것을 표현하기 위해서 두가지 방법이 사용된다.


2-1. Sign-and-Magnitude (부호와 크기)

MSB(Most Significant Bit, 최상위 비트)를 사용하는 방법.

MSB, 즉 가장 왼쪽에 있는 비트를 부호로 사용함.

MSB가 0이면 양의 정수, 1이면 음의 정수.

데이터 크기를 4bit로 가정했을 때,

범위는 (1,111)부터 (0,111)까지며, 이때 (1,000)과 (0,000)은 같은 수. (총 15개의 수를 표현할 수 있음)

S&M 방법은 MSB가 다를 경우 계산이 복잡하다는 단점을 가진다.


2-2. Two's complement (2의 보수)

양의 정수의 경우, 자연수와 같이 표현하지만,

음의 정수의 경우, 음의 정수로 표현하고자 하는 양의 정수의 1의 보수를 구한 후, 1을 더한 2의 보수를 사용한다.

(1의 보수를 구하는 방법 : 모든 비트를 반전 시켜 구함. 0은 1으로, 1은 0으로.)

이 방법을 사용하여 정수를 표하는 경우에도 MSB가 1일 때 음수다.

계산이 용이해 현재 컴퓨터에서 사용되는 방법.


ex) 데이터 크기를 8bit, 즉 1byte로 가정했을 때,

임의의 양의 정수 55를 음의 정수 표현하려면,

55 = 0011 0111의 1의 보수인 1100 1000에 1을 더하면 된다.

즉 -55 = 1100 1001.

앞서 구한 0011 0111과 1100 1001을 더하면 0이 됨을 알 수 있다.

또한 -1은 1111 1111이다. -0은 존재하지 않음.

표현 범위는 -128부터 127까지.



3. 실수(real number)의 표현

실수의 경우 floating point(부동 소수점) 표현을 사용해 표현함.

Sign(부호), Exponent(지수), Mantissa(가수)로 이뤄져 있다.

Single precision: 부호 1bit + 지수 8bit + 가수 23bit

Double precision: 부호 1bit + 지수 11bit + 가수 52bit

부호와 지수를 표현하고 남은 비트를 사용하여 가수 표현.

이 부분의 비트 길이에 따라 얼마나 정확히 실수를 표현할 수 있느냐가 결정됨.

컴퓨터로 완전히 정확한 실수를 표현할 수는 없으며 단지 가까운 수를 표현한다.


ex) Single precision의 경우,

+1000110.0111 -> +2^6 x 1.0001100111 -> (+, 6, 0001100111) -> [1bit: 0, 8bit: 133, 23bits: 0001100111]

이 때, 지수 표현은 Excess 127 표현을 사용하여 6승을 133으로 저장함.

(Excess 127 표현 : 255를 절반으로 나눠 ~ -2승 = 125 -1승 = 126 1승 = 127 2승 = 128 ~ 으로 표현함




* 네트워크에선 16진수를 자주 사용하는데,

이는 16진수가 4bit임으로 1byte를 16진수 2개처럼 표현하기 용이하기 때문이다.



+ Recent posts