ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 3. 데이터의 표현
    전공공부/컴퓨터시스템구조 2020. 3. 23. 20:47
    728x90
    반응형

    목차

    1. 데이터의 종류

    2. 보수

    3. 고정 소숫점 표현

    4. 부동 소숫점 표현

    5. 기타 이진코드

    6. 에러 검출코드

     

    3.1 데이터의 종류

     

    이 장에서는 가장 많이 쓰이는 데이터의 종류를 나열하고 여러 종류의 데이터가 컴퓨터 레지스터에 쓰이기 위하여 이진 코드로 어떻게 표시되는가를 알려준다. 데이터를 분류하면 다음과 같다.

    1. 산술 연산에 쓰이는 숫자

    2. 데이터 처리에 쓰이는 영문자

    3. 특수 목적에 쓰이는 기호

    이들 데이터들은 이진수의 형태로서 컴퓨터 레지스터에 들어가야 한다. 이진법은 디지털 컴퓨터에서 사용하기에 가장 자연스러운 진법이다. 그러나 때로는 다른 진법을 사용하는 것이 편리할 때가 있다. 즉 경우에 따라서는 사람이 산술 연산할 때 사용하는 십진수의 진법이 편리할 때도 있다.

     

    8진수, 16진수 등이 쓰인다.

    영자숫자의 표시

    데이터에 나오는 문자, 기호 등도 코드화가 되어야 한다. 10개의 숫자, 26개의 영어 대문자, $,+,= 등의 특수 기호 등을 합쳐 32~64개의 문자를 표시하여야 되므로 6비트가 필요하며, 영어의 소문자까지 포함시키면 64~128개의  문자를 표시하여야 하므로 7비트가 필요하다.

    표준코드로서 ASCII 코드를 많이 사용한다. 이 코드는 표 3-4 처럼 표시되며, 숫자일 경우 상위 3비트 011을 제외하면 BCD와 같다.(표 3-3 : 이진화 십진수(BCD))

    표 3-3 이진화 십진수(BCD: Binary coded decimal numbers), 표 3-4 ASCII code

     

    3.2 보수

    보수(complement)는 디지털 컴퓨터에서 뺄셈 연산과 논리 계산에 사용된다. r진법에는 두 가지 종류의 보수가 있다. r의 보수와 (r-1)의 보수가 있다. 따라서 이진수에서는 2의 보수와 1의 보수가 가능하고, 십진수에서는 10의 보수와 9의 보수가 가능하다.

     

    3.2.1 (r-1)의 보수

    일반적으로 r진법의 n자리수의 수 N에 대하여, (r-1)의 보수는 (r^n-1)-N으로 정의한다. 예를들면 546700에 대한 9의 보수는 999999-546700=453299이다.

    3.2.2 r의 보수

    r의 보수는 r-1의 보수에서 1을 더함으로써 얻어진다.

     

    3.2.3 부호없는 숫자의 뺄셈

    Ex) X = 1010100 = 84, Y = 1000011 = 67

    (a)의 경우 X,피감수>Y,감수이다. 따라서 Y의 2의 보수를 취한 후 덧셈을 해주고 캐리값인 2^7값을 무시한다.

    (b)의 경우 감수> 피감수 이다. 따라서 감수에 2의 보수를 취한 후 더해주면 캐리값이 발생하지 않는다. (이는 결과 값이 음수임을 뜻함 ) 따라서 결과값에 다시 2의 보수로서 음수 0010001이 된다.

     

    3.3 고정 소숫점 표현

    3.3.1 정수 표현

    어떤 이진 정수가 양수이면, 부호는 0이고 크기는 양의 이진수로 표현된다. 음수의 이진수는 부호가 1이고, 크기는 다음 중에서 하나로 표현된다.

    1. 부호절대값 표현

    2. 부호화된 1의 보수 표현

    3. 부호화된 2의 보수 표현

    부호 절대값 표시에서 음수는 음수 부호와 그 크기를 나타내는 절대값으로 구성되어 있으며, 다른 두 가지 방법에서는 음수가 그 절대값에 대한 1 또는 2의 보수 형태로서 표현된다. 예를 들어 +14를 8비트의 레지스터에 표시해 보면 00001110으로 표현된다. 여기서 가장 왼쪽 비트는 부호 비트로서 0일 때 양수이고 1일 때 음수이다. -14를 표현하는 데에는 위의 세 가지 방법에 따라 각각 다음과 같이 된다.

     

    1. 부호절대값 표현 : 1 0001110

    2. 부호화된 1의 보수 표현: 1 1110001

    3. 부호화된 2의 보수 표현: 1 1110010

     

    nbit의 정수 표현을 표로 나타내면 다음과 같다.

     

    3.3.2 산술 감산

    음수가 2의 보수로 표시되어 있을 때 감산은 간단히 수행된다. 다음의 뺄셈 (-6)-(-13)=+7은 8비트 이진수로 11111010 - 11110011로 표현된다. 이 뺄셈은 감수 (-13)에 대한 2의 보수를 취하여 (+13)으로 만들어주면, 이진수에서는 11111010+00001101=100000111 과 같이 덧셈으로 계산할 수 있다. 다음에 end캐리 2^9를 제거하면 원하는 결과인 00000111 (+7)을 얻을 수 있다.

    또 예를 들어보자 -6 +2 라는 계산식이 있다. 이는 이진수로 1010+ 0010 = 1100 = (-4)가 나온다. 

    마지막으로 예를 들면 2 -6 = 4 라는 식은 이진수로 0010 + (6의 2의 보수= 1010) = 1100 이 나온다. 앞서 부호 없는 숫자의 뺄셈에서는 감산의 숫자가 더 크고, end캐리가 생기지 않으면 다시 2의 보수를 취에서 해당 절대값의 음수가 답이되었지만 여기서는 음수를 2의 보수로 나타낸 값으로 정의하고 있으므로 굳이 2의 보수를 취할 필요없이 1100= -4로 표현하면 정답이 된다.

     

    3.3.3 오버플로

    n자리 두 수를 가산해서 n+1 자리의 합을 얻었을 때 우리는 오버플로가 생겼다고 말한다. 이것은 부호를 가졌든, 갖지 않았든 이진수나 똔ㄴ 십진수에 대해서 진리이다. 디지털 컴퓨터에서 메모리 레지스터를 포함한 모든 레지스터의 길이가 한정된 길이이기 때문에 오버플로는 문제가 된다. n+1비트의 결과는 표준 길이 n비트의 레지스터에 저장할 수 없다. 이러한 이유로 컴퓨터는 오버플로의 발생을 검사하고, 오버플로가 발생했을 때 오버플로 플립플롭을 세트한다. 가산할 때 두 수가 모두 양이거나 음일 때 오버플로가 생길 수 있다. 오버플로의 조건은 부호 비트 밑에서 부호 비트로 올라온 캐리와 부호 비트로부터 생긴 캐리를 관찰함으로써 검출될 수 있다. 만약 이들 두 캐리가 같지 않다면 오버플로 조건이 생긴다. 이 말은 양수 + 양수 의 가장 왼쪽 비트는 0인데 합을 했더니 1이 되면 오버플로, 음수 + 음수 = 음수여서 가장 왼쪽 비트가 1이 나와야되는데 합을 했더니 0이 나오는 경우를 뜻함

     

    3.4 부동 소수점

    숫자의 부동 소숫점 표현은 두 부분으로 구성되어 있다. 첫번째는 부호화된 고정 소숫점 숫자로서 가수라고 하며, 두번째는 지수라고 하는 십진 또는 이진 소숫점의 위치를 알려주는 부분이다. 고정 소숫점의 가수는 분수나 정수 모두 가능하다.

    32비트 부동소수점 표기는 다음과 같은 양식을 따른다. 

    s는 부호를 나타내며 0이면 양수 1이면 음수를 뜻한다.

    그리고 exp구간은 지수부분을 뜻하는데 여기서 exp값은 Bias= 127 값을 더한 값으로 표현하고 frac부분에 고정 소숫점 값을 표기하면 된다. 

    예를들어 15213이라는 숫자가 있다고 하자. 15213은 이진수로 변환하면 11101101101101 = 1.1101101101101*2^13이다. 즉 지수는 13이고, 고정소숫점 값은 0110 1101 1011 0100 0000 0000 (frac 부분의 상위비트부터 채워넣는다.)

    E=13이므로 exp= 13+127=140 = 10001100 으로 표기하고 이 값을 exp에 넣으면 된다. bias로 127을 더하는 이유는 127보다 작은 값으로 소수를 표현하기 위해서이다. 2^13을 표현하는 것이 아닌 2^(-13)을 표현해야될 수도 있기 때문이다.

    결과적으로 15213.0을 부동소수점으로 나타내면 0|100 0110 0|110 1101 1011 0100 0000 0000 로 표현할 수 있다.

     

    3.6 에러 검출 코드

    이진 정보를 전송할 때 외부 잡음이 들어가면, 1이 0으로, 또는 0이 1로 변하여 에러가 생길 가능성이 있다. 가장 일반적인 에러 검출 방법은 패리티 비트를 사용하는 것이다. (이 경우에 두 비트가 동시에 에러라면 에러 검출이 불가능하다)

    그림 3-3에서 송신축에 패리티 발생기가 있고, 수신축에 패리티 검사기가 있다. 패리티 검사기의 출력이 패리티 발생기의 출력과 같으면 전송중에 에러가 없는 것이고, 만약 다르다면 전송중에 에러가 생긴 것이다.

    그림 3-3

     

    728x90
    반응형

    댓글

Designed by Tistory.