숫자 데이터의 표현
숫자 데이터의 표현
정보 단위
비트(bit)
- 0과 1을 표현하는 가장 작은 정보 단위
- n비트로 $2^n$개 정보 표현 가능
- 비트를 묶은 단위는 아래와 같다.
이전 단위를 1024개씩 묶은 단위는 kiB, MiB, GiB 등으로 불린다.
단위 | 크기 |
---|---|
1 바이트(byte) | 8 비트(bit) |
1 킬로바이트(kB) | 1,000 바이트(byte) |
1 메가바이트(MB) | 1,000 킬로바이트(kB) |
1 기가바이트(GB) | 1,000 메가바이트(MB) |
1 테라바이트(TB) | 1,000 기가바이트(GB) |
… |
워드(word)
- CPU가 한 번에 처리할 수 있는 정보의 크기 단위
진법
진법의 종류
3진법, 60진법 등 다양한 진법이 있지만, 주로 사용되는 진법은 다음과 같다.
- 2진법
5를 $0101_{(2)}$로 표현 가능
코드 상에서는0b
를 앞에 붙여 0b0101로 표현 가능 - 8진법
10을 $12_{(8)}$로 표현 가능
코드 상에서는0
을 앞에 붙여 012로 표현 가능 - 10진법
- 16진법
28을 $1c_{(16)}$로 표현 가능
코드 상에서는0x
를 앞에 붙여 0x1c로 표현 가능
2진법의 음수 표현
1의 보수
- 2진수에서 0은 1로, 1은 0으로 뒤바꾸는 방식
- 비트 연산자 NOT(~)을 사용한 결과와 같다고 볼 수 있음
-5를 1의 보수로 표현해보면 0101의 각 자리수를 뒤집어 1010로 표현할 수 있음
- 0을 8비트로 표현했을 때
0000 0000
,1111 1111
로 둘 다 표현 가능하기 때문에, 표현 가능한 범위는 -127 ~ 127 (255개)이다. - 연산시 자리 올림이 발생할 경우, 자리올림수를 더해줘야 한다.
4 + (-2) = 0100 + 1101 = 10001 = 0001 + 1 = 0010 = 2
4비트이기 때문에 앞자리 1을 버리면 0001이고 이때 자리올림수 1을 더해줘야 0010 즉, 2가 된다.
2의 보수
- 실제 2진법의 음수 표현 방식으로 채택된 방법
- 2진수에서 은 1로, 1은 0으로 뒤바꾼 뒤 1을 더하는 방식
- 비트 연산자 NOT(~)을 사용한 뒤 1을 더한 결과와 같다고 볼 수 있음
-5를 2의 보수로 표현해보면 0101의 각 자리수를 뒤집은 뒤 1을 더해 1011로 표현할 수 있음
- 0을 8비트로 표현했을 때
0000 0000
하나 뿐이고,1111 1111
은 -1을 의미하기 때문에, 표현 가능한 범위는 -128 ~ 127 (256개)이다.
1의 보수 vs 2의 보수
- 1의 보수는 0을 표현할 수 있는 방식이 두 개나 있기 때문에, 2의 보수보다 표현 가능한 수가 1개 적다.
- 1의 보수는 자리 올림 발생시 자리올림수를 더해줘야 하기 때문에, 2의 보수보다 비효율적이고 unsigned를 표현하는 부분에서도 문제가 발생한다.
This post is licensed under CC BY 4.0 by the author.