데이터의 표현과 연산
데이터의 표현과 연산
1. 컴퓨터의 수 체계
- 우리는 10진수를 사용하지만 컴퓨터는 0과 1로 모든 것을 판단하기 때문에 2진수를 사용한다.
- 컴퓨터의 연산과 제어의 기본은 부울대수이며, 컴퓨터가 다루는 데이터를 2진 숫자(Binary digIT)라고 하며 약자로 비트(BIT)라고 한다.
- 8개의 비트를 한 단위로 하여 1바이트(byte)로 사용한다.
- 2진수의 최상위 비트를 MSB(most significant bit)라 하고 최하위 비트를 LSB(least significant bit)라 한다.
2. 데이터의 표현
1) BCD 코드
- Binary Coded Decimal의 약자로 8421 코드라고도 한다.
- BCD 코드는 각 비트 자리가 자리값을 갖는데 1010이라는 4자리 비트가 있다고 했을 때 왼쪽(10진수로 생각할 때 1000의 자리)부터
- 2^3 = 8
- 2^2 = 4
- 2^1 = 2
- 2^0 = 1
- 의 값을 가지므로 8421코드라 부른다.
- 일반적으로 10진수를 2진수로 표현하는 것과 비슷하지만 10이 넘어가면 2진수는 1010이라고 표현하지만 BCD 코드는 0001 0000, 11은 0001 0001 … 와 같은 방식으로 표현한다.
2) 문자 데이터
- 문자 데이터는 1바이트의 데이터이다. 아스키코드의 문자 ABC를 2진법과 16진법으로 나타낸다면 다음과 같이 된다.
문자 | 2진법 | 16진법 | |
---|---|---|---|
A | 0100 0001 | 41H | |
B | 0100 0010 | 42H | |
C | 0100 0011 | 43H |
3) 존(Zone) 형식
- 언팩(unpack) 형식이라고도 하며, 1바이트에 한 개의 10진수가 저장된다. 1바이트의 왼쪽 4비트를 존(zone) 비트라고 하며 항상 F(16진수)가 들어 있다.
2진수 | 1111 | 0111 | 1111 | 0001 | 1100 | 0010 | |
---|---|---|---|---|---|---|---|
16진수 | F | 7 | F | 1 | C(양수) | 2 |
- 10진수를 712로 표현한다면 위와 같이 표현되는데 마지막 바이트의 왼쪽 4비트를 이용해서 부호를 나타낸다. 위와 같은 경우처럼 마지막 바이트의 왼쪽 4비트가 C라면 양수고
2진수 | 1111 | 0111 | 1111 | 0001 | 1101 | 0010 | |
---|---|---|---|---|---|---|---|
16진수 | F | 7 | F | 1 | D(음수) | 2 |
- 위처럼 D라면 음수로 -712가 된다.
4) 팩(Pack) 형식
- 수치를 표현하는 4비트의 BCD를 1바이트에 2개를 나타내며 10진수 숫자 2개를 표시한다. 존 형식이 절반으로 줄어든 형태라고 보면 된다.
2진수 | 0111 | 0001 | 0010 | 1100 | |
---|---|---|---|---|---|
16진수 | 7 | 1 | 2 | C(양수) |
2진수 | 0111 | 0001 | 0010 | 1101 | |
---|---|---|---|---|---|
16진수 | 7 | 1 | 2 | D(음수) |
5) 고정 소수점 형식
- 고정 소수점 형식은 소수점 위치가 가장 오른쪽 끝에 고정되어 있다고 가정하는 것으로 전체의 수를 정수로 표현한다. 가장 왼쪽의 비트는 부호를 표시하며 0이면 +양수, 1이면 -음수를 나타낸다. 데이터 길이를 n이라고 했을 때 -(2^n-1 - 1) ~ (2^n-1 - 1)의 범위를 나타낼 수 있다.
- 고정 소수점은 BCD 코드에 비해서 명령 속도가 빠르다.
6) 부동 소수점 표현
- 아주 큰 수나 아주 작은 수를 표현한다든지 아니면 높은 정도(precision)로 취급할 때 많이 쓰인다. 유효숫자만을 나타내는 소수부(fraction part)와 소수점의 위치를 나타내는 지수부(exponent part)로 구분한다. 10^-78 ~ 10^74의 범위까지를 나타낼 수 있다.
3. 보수 연산
- 보수(complement)란 어떤 기준이 되는 수를 설정했을 때 그 수에 모자라는 수를 말한다. x에 대한 9의 보수는 9로부터 x를 뺀 것인데, 6에 대한 9의 보수는 3이고 2에 대한 10의 보수는 8이다.
- 보수 연산은 뺄셈을 할 때 9의 보수를 사용하는 방법과 1의 보수와 2의 보수를 사용하는 방법 등이 있다.
4. 정보 교환용 코드
- 정보 교환용 코드는 국제표준화기구(ISO)에 의해 정해지고 이것에 준해서 각국에서 정하여 사용하고 있다. 컴퓨터 대 컴퓨터시스템간의 통신을 단순화하고 표준화하기 위해 만들어졌다.
- 대표적인 것으로 프로그래밍을 할 때 자주 쓰는 아스키(ASCII)코드가 있다.
- 산업 표준으로 전세계 모든 문자들을 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 유니코드(Unicode)가 제정되어 사용되고 있다.