Computer Science/Computer Architecture

[컴퓨터 구조] 데이터와 표현 (1): 비트와 바이트 및 숫자 표현

ggyongi 2024. 12. 23. 18:59
반응형

비트와 바이트

컴퓨터는 우리에게 익숙한 10진법이 아닌 2진법을 사용해 정보를 저장하고 사용한다. 

컴퓨터가 정보를 받아들일 때 전기 신호의 전압이 일정 기준보다 높으면 1, 그렇지 않으면 0으로 변환하여 사용한다.

10진법에서 1과 1을 더하면 2로 표현할 수 있지만, 2진법에서는 2를 표현할 방법이 없어 10으로 넘어간다. 즉, 숫자가 1보다 커지면 바로 '자리 올림'이 발생한다.

10진수 2진수
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000

 

비트(bit): 0과 1을 표현할 수 있는 최소 단위. 

비트를 여러 개 조합하여 데이터를 표현할 수 있다. n개의 비트를 사용하면 2의 n 거듭제곱가지의 데이터를 표현할 수 있다.

예시) 3개의 비트로 8가지의 데이터 표현이 가능: 000, 001, 010, 011, 100, 101, 110, 111

 

바이트(byte): 정보를 표현하기 위한 비트 집합.

1바이트는 8비트이다. 1바이트당 256개의 정보를 표현할 수 있다.

바이트를 더 큰 단위로 묶어 1KB, 1MB, 1GB, 1TB로 표현할 수 있다.

 

 

참고. 16진법

1~9, A~F를 사용하여 16진법을 표현한다.

 

 

정수 표현

음수의 표현

 

부호 비트: n비트의 2진수에서 최상위 비트를 부호 비트로 사용. 부호 비트가 1이면 음수이고, 0이면 0또는 양수이다.

예) 4비트로 숫자를 표현한다고 할 때, 1011의 경우 최상위 비트(가장 왼쪽 비트)가 1이므로 음수이다.

 

2의 보수: 음수를 저장하기위해 사용하는 방법

-3이라는 음수를 저장한다고 하자. 이때 '2의 보수' 연산을 통해 3을 -3으로 변환하는 작업을 거치게 된다.

4개의 비트로 3을 표현하면 0011이다. 여기서 2의 보수 연산은 모든 비트를 반전시키고 1을 더해주면 된다.

0011의 각 비트를 반전시키면(0을 1로, 1을 0으로) 1100이 된다. 여기에 1을 더해주면 1101이 된다.

컴퓨터는 1101을 저장하고 이를 -3으로 인식하게 된다. 

 

4비트로 16개의 숫자 표현이 가능하다고 했었다. 이때 최상위 비트를 부호 비트로 사용하게 되면 아래와 같이 정수 표현이 가능하게 된다.

n개의 비트로 표현할 수 있는 정수의 범위는 -2**(n-1)부터 2**(n-1) -1 까지다.

 

실수 표현

십진법으로 표현된 8.3125을 이진법으로 변환할 수 있다.

정수부분 8은 이진법으로 변환하면 1000이다.

소수부분 0.3125는 이진법으로 변환하면

0.3125 * 2 = 0.625, 정수부분 0을 취하고 소수부분 0.625를 다시

0.625 * 2 = 1.25,  정수부분 1을 취하고 소수부분 0.25를 다시

0.25 * 2 = 0.5,      정수부분 0을 취하고 소수부분 0.5를 다시

0.5 * 2 = 1.0,         정수부분 1을 취하고 소수부분이 0이므로 종료.

 

그럼 앞 순서대로 0101이다.

따라서 8.3125를 이진법으로 고치면 1000.0101이다.

 

이러한 표현 방법은 숫자가 매우 크거나 작아질 때 많은 수의 비트가 필요하게 되는 단점이 존재한다.

따라서 부동소수점 표현 방식을 통해 표현 범위를 확대할 수 있다.

 

국제표준 IEEE 754의 부동소수점 표현 방식(32비트 단일 정밀도)

부호 필드: 31번째 비트. 0이면 양수, 1이면 음수.

지수(E) 필드: 23~30번째 비트. 소수점을 이동하여 얻은 지수값을 저장. 256개 표현이 가능

가수(M) 필드: 0~22번째 비트. 실질적인 값을 저장하게 됨. 2**23개를 표현할 수 있다.

 

 

십진법 8.3125의 이진법 변환 표현은 1000.0101이었다.

이를 부동소수점 방식으로 표현하면 1.0000101 * (2**3)이 된다.

소수점을 이동시켜 1.xx 형태로 바꾸고 점이 왼쪽으로 이동한 칸 수만큼(3) 지수를 설정해준다.

그럼 여기서 지수(E)에 해당하는 수가 3이되고, 가수(M)에 해당하는 수가 0000101이 된다.

 

지수에 해당하는 3은 다시 2진법 표현으로 바꿔주어 00000011(지수는 8비트)이 되는데, 지수는 음수 표현도 가능해야하므로 IEEE 754는 biased number 127을 더해주는 방식을 사용한다. 최종적으로 00000011 + 01111111 = 10000010가 되어 지수 필드에 입력된다.

가수는 현재의 0000101가 가수 필드에 맨 앞부터 입력되고 나머지는 0으로 채워진다.

 

최종적으로 십진법 8.3125는 아래와 같이 저장된다.

 

부동 소수점의 단점

숫자의 정밀도는 가수가 결정하게 되는데, 가수는 23비트로 개수가 제한되어있어

매우 큰, 작은 수나 무한 소수같은 수의 정밀도는 떨어질 수 있다.