[컴퓨터구조]데이터의 표현 정리

류명운

·

2015. 10. 9. 20:14

반응형

3장 데이터의 표현

 

수의 표현

 - 10진법: 0에서 9까지의 10개의 기호를 사용한 수치 표현 방법

 - 2진법: false가 올라가 있는 상태를 '1'로 나타내고 내려가 있는 상태를 '0'으로 나타내는 2진법의 수의 체계

 - 8진법: ex) 124(8) = (1*8^2) + (2x8^1) + (4*8^0) = 64 + 16 + 4 = 82(10)으로 표현

 - 16진법: ex) ABC(16) = (10*16^2) + (11*16^1) + (12*16^0) = 2560 + 176 + 12 = 2748(10)

 

소수의 표현

 

2진수의 소수 표현

 (Quiz1) 10진수 13.75를 2진수로 표현하시오

   

  -> 13(10) = 1101(2), 0.75(10) = 0.11(2) 

  -> 13.75(10) = 1101.11(2)

 

 (Quiz2) 다음 수들을 10진수로 변환하라

 1) 2FA(16진수)

  -> (2*16^2) + (15*16^1) + (10*16^0)

  -> 512+240+10=762(10)

 2) 5432.1(8진수)

  -> (5*8^3) + (4*8^2) + (3*8^1) + (2*8^0) + (1*8^-1) = (512 + 254 + 24 + 2) + 0.125

  -> 792.125

 3) 101010.01(2진수)

  -> 42.25(10)

 

 (Quiz3) 1010.101(2)를 십진수로 변환하라

  -> 1010(2) = 10(10) / 0.101(2) = (1*2^-1) + (1*2^-3) = (1/2) + (1/8) = (5/8) = 0.625(10)

  -> 10 + 0.625 = 10.625(10)

 

 (Quiz4) 십진수 23과 0.625를 각각 진수로 변환하라

  -> 23(10) = 10111(2) / 0.625(10) = 0.101(2)

  -> 10111.101(2)

 

 (Quiz5) 517.390625(10) 값을 8진수로 변환하시오

  -> 정수부와 소수부를 분리함 :527 / 390625

  ->@ (정부수는 몫이 0이 될때까지 n진수로 나누어야함, 답은 나머지 오름차순)

  -> 527/8 = 65(나머지 7)

  -> 65/8 = 8(나머지 1)

  -> 8/8 = 1(나머지 0)

  -> 1/8 = 0(몫이 0, 나머지1)

  -> 나머지를 오름차순하면 정수부의 값은 1017(8)

  ->@ (소수부는 소수부가 0이 될때까지 n진수로 곱해야함, 답은 소수부 내림차순)

  -> 0.390625*8 = 3.125(정수부  3)

  -> 0.125*8 = 1.0(소수부 0, 정수부 1)

  -> 0.31(8)

  ->(최종답)1017.31(8)

 

보수

 : 음의 정수를 나타내기 위해 보수의 표현을 사용함

 : 2진수에는 1의 보수와 2의 보수 표현

 

1의 보수: '1'과 '0'의 값을 바꿔 주면 됨

 ex) 10101010 -> 01010101

2의 보수: 1의 보수를 취해주고 마지막 자리에 1을 더해줌

 ex) 10101010 -> 01010110

 

보수의 뺄셈

 : 컴퓨터는 감수를 1의 보수나 2의 보수를 취하여 피감수에다 덧셈함

* 1의 보수에서 오버플로에 의한 연산 처리가 복잡한 것은 캐리가 발생하면 최하위 비트에 1을 더해서이며, 2의 보수에서는 끝자리 캐리가 있으면 그것을 무시하므로 간단해 짐

 

1) 1의 보수의 뺄셈

 - 피감수 M에 감수 N의 1의 보수를 취하여 덧셈

 - 끝자리 올림 수(end carry)가 발생하면 최하위 비트에 1을 더함

 - 끝자리 올림 수가 없으면 1의 보수를 취하여 덧셈하는 과정에서 얻은 결과를 다시 1의 보수를 취하고, 그 수 앞에 음수(-) 부호를 붙임

 (Quiz6) 1의 보수를 이용하여 00001101(2)-00000110(2)를 하시오

  ->00001101-00000110

  ->00001101+11111001=1 00000110(캐리발생)

  ->00000110+00000001(캐리가 발생했기 때문에 최하위 비트에 1을 더함)

  ->00000111

 

 (Quiz7) 1의 보수를 이용하여 00000110(2)-00001101(2)를 하시오

  ->00000110-00001101

  ->00000110+11110010=11111000(캐리가 발생하지 않음)

  ->-00000111(캐리가 발생했기 않았기 때문에 다시 1의 보수를 취하여 앞에 음수 부호를 붙임)

 

2) 2의 보수의 뺄셈

 - 피감수 M에 감수 N의 2의 보수를 취하여 덧셈

 - 끝자리 올림 수가 있으면 그것을 무시

 - 끝자리 올림 수가 없으면 2의 보수를 취하여 덧셈하는 과정에서 얻은 결과를 다시 2의 보수를 취하고, 그 수 앞에 음수(-) 부호를 붙임

 (Quiz8) 2의 보수를 이용하여 00001101(2)-00000110(2)을 하시오

  ->00001101-00000110

  ->00001101+11111010= 1 00000111(캐리발생)

  ->00000111(캐리무시)

 

2진수의 곱셈

 : 2진수의 곱셈에는 여러 가지 방법이 있으나 일반적으로 곱셈의 원리는 반복적인 덧셈이므로 곱하는 수의 최하위 수를 조사하여 덧셈과 자리 옮김으로써 곱셈이 이루어짐

 ex) 00110*0101

 

 

2진수의 나눗셈

 : 2진수의 나눗셈은 나누어지는 수의 맨 윗자리와 나누는 수의 맨 윗자리를 맞춘 후 뺄셈과 자리 옮김으로써 나눗셈이 가능함

 ex) 1110/11

 

 

* 컴퓨터에서의 2진 연산은 뺄셈, 곱셈, 나눗셈 모두가 덧셈으로 변환이 가능하기 때문에 컴퓨터 내부에서는 가산기(adder)를 이용하여 4식 연산을 수행한다

 

 

컴퓨터 내부에서의 데이터의 표현

 

컴퓨터 내에서 표현할 수 있는 문자: 영문자와 숫자, 특수기호, 한글 등의 여러 가지가 있으며 이들 문자는 2진수로 기호화(code)되어 기억장치에 비트단위의 조합으로 표현

 

비트(bit), 바이트(byte), MSB(Most Significant Bit)와 LSB(Least Significant Bit)

 

수치 데이터

 : 사칙 연산의 대상이 되는 데이터를 말하는 것으로 정수(고정 소수점) 데이터 형식과 실수(부동 소수점) 데이터 형식, 10진 데이터 형식이 있음

 

2진화 10진 코드(BCD, Binary Coded Decimal)

 : BCD 코드는 원래 10진수의 숫자를 나타내기 위해 4비트의 조합으로 만들었으나 영문자, 특수 문자 등을 나타내기 위해 그 비트를 추가한 6비트로 구성

 : 10진법의 모든 수를 2진법의 8, 4, 2, 1의 4자리에 맞추어 표현하는 방법

 : 6비트 BCD코드의 경우 표현 가능한 문자의 수는 2^6=64가지가 됨

 - 존 비트(zone bit): 2진화 10진 코드 왼쪽의 2비트로서 전화 번호의 국 번호와 같은 역할을 함

 - 디지트 비트(digit bit): 나머지 4비트로서 일련 번호와 같은 역할을 함

 - 패리티 비트(parity bit): 기계적인 에러를 검사하는 용도로 사용하며 왼쪽 끝에 더 붙일 수 있음

 

 

ASCII 코드

 : 7개의 비트로 구성된 코드이며 3개의 존(zone)과 4개의 숫자(digit)로 구성

 : 앞 부분의 4개 부분 코드는 영문자, 특수 문자 등을 구분할 수 있도록 함

 : 최근 패리티 비트를 추가하여 8자리의 2진 코드를 많이 사용함

  *패리티 비트: 모든 비트열에 있는 1의 합이 항상 짝수 또는 홀수 개를 유지할 수 있도록 비트열에 추가한 검사 비트

 : PC 기종에서 널리 사용되며 데이터 통신용으로 많이 사용됨

 

 

EBCDIC 코드

 : 8비트로 구성된 코드이며 4개의 존(zone)비트와 숫자(digit)비트로 구성됨

 : 8비트 코드이므로 2^8(=256)개의 서로 다른 문자를 표현

 : IBM 대형 컴퓨터에서 기본으로 사용되었음

 

 

패리티 비트(Parity bit)

 : 원래의 코드에 1비트의 검사용 비트를 덧붙여서 기계적 에러를 검사하기 위한 것이며 자기 테이프나 자기 디스크 등에서는 데이터 비트와 함께 기록

 : 한 코드 내에서 자신을 포함한 전체 비트 중 1의 비트가 홀수개 또는 짝수개를 유지하게 함

 

 

해밍 코드(Hamming code)

 : 해밍이 고안했으며 잘못된 정보를 발견하고 수정할 수 있게 한 코드

 : 검사 비트가 최소 3개는 되어야 함

  * 2진화 10진수의 4비트를 검사할 때에도 전체 비트가 4개이어야 함

  * 검사용 비트위치는 1, 2, 4행에 패리티 검사 비트가 배열되고 3, 4, 6, 7행에는 디지트 비트가 배열됨 

 

 

그레이 코드(Gray code)

 : 비가중치 코드이며 연산에는 부적합하지만 어떤 코드로부터 그 다음의 코드로 증가하는 데는 하나의 비트만 바꾸면 됨

 : 데이터의 전송, 입출력장치, 아날로그-디지털 변환기와 주변장치에 많이 사용됨

 그레이 코드->BCD, BCD->그레이 코드 변환할때는 XOR연산을 사용함

 

 

액세스-3 코드(Excess-3 code)

 : 8421코드에 3을 더한 코드로 3초과 코드 또는 3중 코드라고 함(8421코드보다 3이 더 큼)

 : 자기보수 코드(self-complement cod)라고도 하는데 Excess-3 code의 0과 9, 1과 8, 2와 7 등이 1의 보수 관계에 있기 때문

 : 이와 같이 자릿수가 특별한 의미를 지니지 않는 코드를 비가중치 코드라 함

 : Excess-3 코드와 BCD 코드- BCD코드로 표현된 값에 3을 더하여 나타낸 코드이다

 

2-5진(biquinary) 코드

 : bi는 2를 의미하고 quinary는 5를 의미하기 때문에 2-5진 코드라 한다

 : 7개의 비트로 되어 있는데 그 비트 중에서 1의 개수는 두 개로 되어 있다

 : 위치가 나타내는 값에 의해 가중치를 가지며 각 비트 순서대로 5043210의 의미를 가지므로 5043210코드라고도 함 

 

 

링 카운터 코드(Ring counter code)

 : 이해하기가 매우 쉬울 뿐 아니라 전자 회로를 사용하여 해독하는 것도 매우 용이함

 : 각 코드 내에 1을 가지는 비트는 단 1개

 : 이 코드에서 10진수로 변환시킬 경우 오른쪽 끝자리부터 왼쪽으로 오면서 가중치를 0, 1, 2, ..., 9로 주어 1비트의 값을 구하면 됨

 

 

2421코드

 : 10진수를 2진수로 표현할 때 각 자릿수의 가중치가 2, 4, 2, 1

 : 1111은 십진수 2+4+2+1을 더한 9가 됨 

 

 


 

 코드의 분류표

 분류 

 코드종류

 가중치 코드

 BCD(8421), 84-2-1, Ring-Counter 등

 비 가중치 코드

 3초과(Excess-3), Gray, 2-out-of-5 등

 자기 보수 코드

 3초과(Excess-3), 2421, 51111, 84-2-1

 오류 검출용 코드

 해밍코드, 패리티 코드, 2-out-of-5 등

 

반응형