포털:고등학교/정보·통신 계열 전문 교과(2015)/컴퓨터 구조/컴퓨터의 동작 원리

위키배움터

1. 수의 연산[편집]

진법과 변환[편집]

디지털 컴퓨터는 기계이므로 10진법을 쓸 수가 없다. 그래서 신호가 존재하고 있는가와 없는가를 확인하는 2진법을 사용할 수밖에 없다. 2진수를 프로그램 언어에서는 ‘기계어’라고도 한다.

 1) 2진수 : 2진수의 밑수(base)는 2이고 22, 21, 20이 자릿값이 된다. 2진수는 0과 1의 2개의 기호를 사용한다.
      10112 = 1 x 23 + 0 x 22 + 1 x 21 + 1 x 20
 2) 8진수 : 8진수는 0에서 7까지 숫자 기호를 가지고 있다. 밑수는 8이고, 8진수 2768을 표현하면 다음과 같다.
      2768 = 2 x 82 + 7 x 81 + 6 x 80
 3) 16진수 : 16진수는 0에서 9까지의 숫자와 A, B, C, D, E, F의 16개의 기호를 사용한다. 10진수 10, 11, 12, 13, 14, 15를 숫자 기호 하나로 표현할 수 없으므로 A, B, C, D, E, F로 대치하였다.
      5B16 = 5 x 161 + 11(B) x 160
10진수 2진수 8진수 16진수
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F

진수의 변환[편집]

   1) 10진수에서 2진수, 8진수, 16진수의 변환
     - 10진수에서 2진수 변환
     2 ) 35             ^
     2 ) 17  ----- 1    |
     2 ) 8   ----- 1    |
     2 ) 4   ----- 0    |  밑에서 위로 나열함.
     2 ) 2   ----- 0    |
         1   ----- 0    |
      ------------------
      3510 = 1000112
   2) 10진수에서 8 진수 변환
     8 ) 156            ^
     8 ) 19  ----- 4    |
         2   ----- 3    |
      ------------------
      15610 = 2348
   3) 10진수에서 16 진수 변환
     16 ) 123                ^
          7   ----- B(11)    |
      -----------------------
      12310 = 7B16

진수의 연산과 보수[편집]

   1) 2진수 연산
덧셈 뺄셈
0 + 0 = 0 0 - 0 = 0
1 + 0 = 1 1 - 0 = 1
0 + 1 = 1 1 - 1 = 0
1 + 0 = 1 1 - 1 = 0
1 + 1 = 10 자리 올림수 발생 0 - 1 = 1 빌림수 1
     - 2진수의 덧셈 : 2진수 덧셈은 잘 올림수를 포함하여 연산 한다.
         
      2진수 덧셈 10112 + 1102 의 값은?
         1011
       +  110
        10001
     - 2진수의 뺄셈 : 2진수의 뺄셈은 피감수가 감수보다 작아서 계산할 수 없을 때 윗자리에서 수를 빌려 온다. 이를 ‘빌림수’라 한다. 하지만 컴퓨터의 체계에서는 보수를 더해서 계산한다. 컴퓨터 구조를 간단하게 하기 위해서 감수를 보수로 변환하여 더한다. 실제상의 컴퓨터의 모든 사칙연산은 2진수의 덧셈으로 이루어진다.
       2진수 뺄셈 10112 - 1102 의 값은?
         1011
       - 0110
          101
     - 2의 보수에 의한 뺄셈 : 컴퓨터의 뺄셈은 보수를 더하여 이루어진다. 보수에는 1의 보수와 2의 보수가 있는데, 주로 2의 보수로 연산이 이루어진다.
         11012 - 10102의 뺄셈은? (8bit 연산)
         0 0 0 0 1 1 0 1 
       + 1 1 1 1 0 1 1 0   <- 1010의 2의 보수
       1 0 0 0 0 0 0 1 1   <- 맨 앞의 1을 버림
          
  • 피감수 > 감수
   0111        0111
 - 0100   => + 1100   <= 2의 보수  
              10011  <= 1을 버림
            
  • 피감수 < 감수
   0100        0100
 - 0111   => + 1001  <= 2의 보수
               1101
             - 0011 <= 2의 보수
        
     - 2진수의 곱셈 : 2진수의 곱셈은 덧셈을 반복하여 곱셈을 계산한다.
     - 2진수 나눗셈 : 2진수의 나눗셈은 뺄셈을 반복하여 나눗셈을 계산한다. 뺄셈도 보수를 이용하여 덧셈으로 계산하므로 사칙연산은 덧셈으로만 이루어진다.

2. 디지털 코드[편집]

BCD 코드[편집]

BCD 코드는 0에서 9까지 10진수를 2진수 4자리로 표현하는 코드이다. BCD 코드는 가중치(23=8, 22=4, 21=2, 20=1)를 가지고 있다.

10진수 0 1 2 3 4 5 6 7 8
BCD 코드 0000 0001 0010 0011 0100 0101 0110 1000 1001
  36 + 42를 BCD 로 바꾸어서 연산하시오.
 
   0011 0110
 + 0100 0010
 = 0111 1000   => BCD 수

3초과 코드[편집]

3초과 코드는 BCD 코드에 310(00112)을 더한 것으로 3초과 코드는 각 자릿수가 고유 값인 가중치를 가지지 않는 코드로 가중치 없는 코드라 한다.

10진수 0 1 2 3 4 5 6 7 8
3초과 코드 0011 0100 0101 0111 1000 1001 1010 1011 1100

그레이 코드[편집]

그레이 코드는 서로 이웃하는 숫자와 1개의 비트만 변경되므로 코드 입력을 할 때 오류가 적다. 입출력 장치 등에 사용된다.

10진수 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
2진수 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
그레이 코드 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000
  2진수에서 그레이 코드로 변환
     0  1  1  0   : 2진수
     0  1  0  1   : 그레이 코드
  그레이 코드에서 2진수로 변환
     0  0  1  0   : 그레이 코드
     0  0  1  1   : 2진수

ASCII 코드[편집]

영문자, 숫자, 기호를 표현하는 2진 코드를 ASCII(American Standard Coded for Information Interchange) 코드라고 한다. ASCII 코드는 7bit 코드로 영어 대문자 26자, 소문자 26자, 숫자 10자, 특수 문자를 포함한다. ASCII 코드는 7bit이지만 대부분의 컴퓨터는 8bit 단위로 처리하므로 8bit 단위인 1byte에 저장된다. 하지만 비영어권 문자인 한글이나 한자는 ASCII 코드로 표현할 수 없어 2byte(16bit)를 한 묶음으로 묶어 유니코드 문자를 표현하고 있다.

① 미국 표준 협회가 만든 정보 교환용 코드이다.

② 데이터 전송과 컴퓨터 내부 문자 데이터 처리에 많이 사용된다.

③ 7개의 비트를 이용하여 128개의 문자를 표현한다.

EBCDIC 코드[편집]

IBM사에서 개발한 코드로 BCD를 확장하여 8bit의 문자 데이터를 표현한다. EBCDIC(Extended Binary Coded Decimal Interchanged Code) 코드는 영문자, 숫자, 특수 기호 등 256자의 서로 다른 문자를 표현할 수 있다.

① 알파벳 소문자를 표현하지 못하는 BCD 코드의 문제 해결을 위해 개발된 코드이다.

② 대형 컴퓨터에 많이 사용된다.

③ 8개의 비트를 이용하여 256개의 문자를 표현한다.

유니코드[편집]

ASCII 코드는 영문자와 같이 문자 수가 적은 언어는 표현하기 쉬우나, 한글이나 한자 같이 글자 수가 많은 문자는 표현하기 어렵다. 언어와 상관없이 모든 문자를 16비트로 표현하므로 최대 65,536자를 표현할 수 있다. 전 세계 주요 컴퓨터 회사들이 업계 표준으로 규정한 만국 공통 문자 코드로서 세계 각국의 언어를 통일된 방법으로 표현할 수 있게 제안된 국제적인 코드 규약이다.

패리티 비트 코드(Parity bit code)[편집]

정보를 2진수로 바꾸어 전달할 때 디지털 신호가 잡음(noise)에 의해 잘못 전달될 수 있다. 이런 오류(error)를 간단히 검출하는 방법으로 패리티 검사를 사용하는데, 짝수와 홀수 패리티 비트가 있다.

ⓛ 짝수 패리티

1의 개수가 짝수이면 최상위 비트를 0, 홀수이면 1로 하여 1의 비트 수를 짝수로 만든다.

② 홀수 패리티

1의 개수가 짝수이면 최상위 비트를 1, 홀수이면 0으로 하여 비트 수를 홀수로 만든다.

해밍 코드(Hamming code)[편집]

패리티 비트를 사용하면 오류가 발생하였는지 아닌지는 알 수 있지만, 어느 비트에 오류가 발생되었는지는 모른다. 한 데이터 내에서 단일 비트의 오류가 발생했을 때 어느 비트가 오류인지 알 수 있도록 고안된 코드이다.

  비트 자리 : 1   2   3   4   5   6   7 
  해밍 코드 : C1  C2  8   C3  4   2   1

① 정보는 3, 5, 6, 7자리에 쓴다.

② 검출 비트 C1은 1, 3, 5, 7자리의 짝수 패리티가 되도록 선택한다.

③ 검출 비트 C2는 2, 3, 6, 7자리의 짝수 패리티가 되도록 선택한다.

④ 검출 비트 C3은 4, 5, 6, 7자리의 짝수 패리티가 되도록 선택한다.