-
컴퓨터일반 - 2. 자료표현컴퓨터+a/컴퓨터일반 2017. 4. 6. 22:26
<자료표현>
1. 수의 표현법
* 10진수를 r진수로 변환할 때:10진수를 r로 나누고 나머지를 구한다. 다시 몫을 r로 나누어 나머지를 구하는데 몫이 0이 될 떄까지 수행한 후 나머지를 역순으로 정돈하면 된다. 10진수가 소수부를 내표하고 있는 경우는 소수부에 r을 곱하여 얻은 정수를 구하고 소수부에 다시 r을 계속해서 곱해 나간다. 소수부가 0이 될 때까지 얻은 순서대로 정수들을 정돈하면 된다.
예) 10진수 25.625
25/2=12...1/2=6...0/2=3...0/2=1...1/2=0...1 -> 11001
0.625*2=1.25 0.25*2=0.5 0.5*2=1.0 -> 101
11001.101
* 2진수, 8진수, 16진수의 관계
① 16¹ = 2⁴ 16진수 한자리는 2진수 4자리
② 8¹ = 2³ 8진수 한자리는 2진수 3자리
③ 16¹ = 8^4/3 16진수 한자리는 8진수 4/3자리 -> 16진수 한자리를 2진수 4자리로 늘리고 다시 3자리씩 묶는다
2. 코드의 종류
일반적으로 10진수를 다른 진수로 변환하여 코드화해서 씀
인코딩 : 코드화하는 것
디코딩 : 10진수로 다시 변환하는 것
R^x = 10^n (R:r진수, x,n:몇자리)
x = n/logR
예) 10진수 1자리인 10가지 수를 2진수로 표현하려면 x=1/log2=3.32개 필요
code - weighted code:코드화 했을 때 비트 자리에 일정한 값을 가지는 code, 연산가능(서열이 있다)
- unweighted code:일정한 값을 갖지 않은 code, 연산불가
(1) 8421 코드 - 연산 가능 / 2진화 10진수, pack형태의 수
10진수 1자리의 수를 2진수 4자리로 표현한 수(4 bit)
don't care 1010, 1011, 1100, 1101, 1110, 1111는 존재하지 않음
(2) 3초과 코드 excess-3 code - 연산불가
8421코드의 연산을 돕기 위하여 만든 것. 8421코드에 3을 더해서 만든 code
자기보수코드(3초과 코드의 1의 보수가 이의 10진수에 대한 9의 보수, 또는 2의 보수가 10진수에 대한 10의 보수가 되는 경우) 예) 4 즉, 0111의 1의 보수 1000는 5의 3초과 코드
don't care 0000, 0001, 0010, 1101, 1110, 1111
(3) 2421코드 - 연산가능, 2에서 7까지 2개씩
자기보수코드
don't care 존재하지 않음
(4) GRAY 코드 - 연산불가
입출력장치, A/D변환기 등의 코드로 유용하게 쓰임
이웃하는 수가 단일비트가 변화하여 만들어진 코드
오차가 적게 나온다
예) 2진수 1011 그레이코드로 변환
맨앞자리 그대로 내림 1
맨 앞자리와 두번째 자리 비교, 같으면 0 다르면 1(XOR), 다르니까 1
마찬가지로 1, 0
예2) 그레이코드 1110을 2진수로
맨앞자리 그대로 내림 1
내린 수와 두번째 자리수 비교 XOR, 같으니까 0
0과 1비교 1
1과 0비교 1
->1011
(5) 5421수 - 연산가능
자기보수코드가 아니다, 5,6,7 두가지
Don't care 1101, 1110, 1111
(6) 51111코드 - 연산가능
자기보수코드
Don't care가 존재하지 않는다
(7) parity bit
2진수로 이루어진 한 코드를 그대로 두거나 1비트를 추가하여 이 코드의 착오를 검출한다.
비트에서 1의 개수가 홀수개이면 홀수패리티, 짝수개이면 짝수패리티
짝수 패리티 P=x⊕y⊕z, 홀수패리티 (x⊕y⊕z)'
홀수 패리티에 대한 에러 검출 진가표(홀수면 정상이므로 0, 짝수면 비정상이므로 1) 부울함수 E = (x⊕y⊕z⊕p)'
(8) 착오교정 해밍코드
착오를 찾아 교정까지 할 수 있게 만든 코드
단, 1bit의 오차에 대해서만 정확하게 교정이 가능
패리티비트의 위치는 2의거듭제곱수의 위치이다. 자료비트는 나머지 비트
예) 송신 1001101 수신 1001111
수신된 자료비트 중 유효비트 1의 위치와 해밍코드의 check bit를 쓰고 XNOR(홀수인 경우, 짝수인 경우는 XOR)
유효비트의 위치 5 = 101
6 = 110
7 = 111
해밍코드 check bit -> 101
--------------------------------------NXOR(같으면 1, 다르면 0) -> 1이 짝수개면 1, 홀수개면 0
110 -> 6번째가 잘못된 비트
3. 고정소수점수 : 소수점의 위치가 항상 고정(가장 오른쪽), 정수
수가 극히 크거나 작은경우에는 정밀도 잃어버림->오버플로우->부동 소수점 수
* 수의 보수 : r의 보수와 (r-1)의 보수
r-1의 보수 - 각 자리수를 (r-1)에서 뺀다, (Rⁿ-D)-1/ r의 보수 - 각 자리수를 (r-1)에서 빼고 마지막 자리수에 1을 더한다, Rⁿ-D.(R:기수, D:임의의 수, n:D의 자리수)
2의 보수 = 1의보수 + 1, 가장 우측으로부터 처음으로 1이 나타날 떄까지는 그대로 쓰고 그 다음부터 0은 1로, 1은 0으로
2진 고정소수점 수 표현방법에는 음수를 표현하는 방법 3가지
부호절대값 표시방법 -7~7 -(2^(n-1) - 1)~2^(n-1)-1
부호화된 1의보수 표시방법 -7~7 -(2^(n-1) - 1)~2^(n-1)-1
부호화된 2의보수 표시방법 -8~7 -2^(n-1) ~ 2^(n-1)-1
예) 5:0101/-5: 1101, 1010, 1011
수의 표현 범위는 언제나 양수와 음수를 1/2씩 나누어 표현
양수쪽은 0부터 시작하므로 늘 홀수값에서 끝남
음수쪽은 -1부터 시작하면 짝수에서 끝나고 -0부터 시작하면 홀수에서 끝남
예) -50
2의보수 방법 좌측은 부호자리 1, 가장 우측은 짝수니까 0
1의보수 방법 좌측은 마찬가지 1, 가장 우측은 짝수일때 1(1의 보수체제에서는 양수쪽의 짝수, 홀수는 음수쪽에서는 홀수, 짝수)
4. 부동소수점수 : 실수형 자료, 수의 범위를 넓힐 수 있다./부호, 지수, 소수로 구성
부호 : 부호절대치 양수 0, 음수 1
지수 : bias(실제지수+127)->부호없게 0부터 시작함(0~255), 4byte
가수 : 1.xxxxxxx..xxx에서 x부분, 실제 유효비트 24bit -> 2진수 24자리, 10진수 7자리
예) 1.6*2^10에서 6이 가수, 10이 지수
0 1 7 8 31
부호
지수
소수
정규화 : 최초의 유효숫자가 소수점 바로 다음부터 나타나게 표현하는 것(IBM에서의 16진수에 대해)
최초의 유효숫자가 소수점 앞부터 나타나게 한다(IEEE 표준에서의 2진수에 대해)
소수점의 위치가 가장 우측에 나타나게 한다
-> 정규화를 마치면 항상 일정하고 규칙적인 부분과 불규칙적인 부분이 존재하게 된다. 불규칙적인 부분을 저장.
부호는 부호절대치 방법 - 음수는 1, 양수는 0
소수부 24bit, 지수부 7bit 0~127->-64~63(실제 지수값) 여기에 64더한 수치로 기억시킴:64bias법
두 실수를 더하거나 뺄때는 지수부분의 값을 같게해줘야 함. 정밀도를 높이기 위해서는 큰 지수쪽으로 맞추는게 좋음.
지수를 맞춰야해서 고정소수점수표현 연산보다는 느리다. 그러나 큰 지수쪽으로 맞추면 오차가 적어진다.
IEEE 표준안에 따른 수의 범위 계산
① 4byte 지수부분 8bit 0~255, bias 127 -127~128, 지수 범위 2^-127~2^128, 10진수면 -45, 38, 유효숫자 7자리
② 8byte 지수부분 11bit, bias 1023, 308, 유효숫자 16자리
③ 10byte 지수부분 15bit, bias 16383
부동소수점의 문제점 - 부동소수점수의 소수이하자리의 변환시 대부분 무한소수로 변환, 메모리에서 기억시 가수부자리만 큼, 기억시키는데 반올림되어 기억됨 .0과 .5만 정확하게 변환
[출처] 유레카 컴퓨터일반 - 이재환, 이정식
교재를 개인 공부 목적으로 정리한 것입니다. 틀린부분이 있을 수 있습니다.
문제가 될 시 알려주시면 바로 조치하겠습니다.
무단배포나 복사는 금지합니다.
728x90'컴퓨터+a > 컴퓨터일반' 카테고리의 다른 글
컴퓨터일반 - 6. 입출력 (0) 2017.04.30 컴퓨터일반 - 5. 기억장치 (0) 2017.04.28 컴퓨터일반 - 4. 명령어 (0) 2017.04.13 컴퓨터일반 - 3. 연산 (0) 2017.04.07 컴퓨터일반 - 1. 논리회로 (0) 2017.04.05