본문 바로가기

자동제어/PC 제어

PC제어프로그램 3일차 (20.05.07) - 진수의 연산, 뺄셈

반응형

 ■ 진수의 연산

  7(10)

+8(10)

 15(10)

  1(2)

+1(2)

10(2)

  1(2)

+1(2)

+1(2)

11(2)

 

10진수 6+5를 2진수로 변환시켜 계산해보자.

  6(10)

+5(10) 
   ?

         ->

  0110(2)

+0101(2) 

  1011(2)

검산: 2진수 1011는 10진수로 11이다.

 


 

 ■ 뺄셈

   ◆ 초기의 컴퓨터는 직접 뺄셈을 수행

   ◆ 뺄셈을 보수에 의한 덧셈으로 한다.

 


 ■ 보수를 사용하는 목적은

뺄셈을 하기 위한 방법 -> 뺄셈을 덧셈으로 용이하게 하는 방법

 


 

 ■ 1의 보수 / 2의 보수

1의 보수 - 각 자리의 0을 1로, 1을 0으로 변환

110100(2)의 1의 보수는

001011(2)

1011(2)

 

2의 보수는 1의 보수에 1을 더한다.

1011(2) + 1(2) = 1100(2)

 

ex) 10101(2) -> 1의 보수는 01010 -> 2의 보수는 01011(2) -> 따라서 1011(2)

 


 ■ 보수에 의한 뺄셈 (1의 보수에 의한 방법)

  ◆ 피감수에 감수의 1의 보수를 취한 후 더한다.

  ◆ 맨 위자리의 자리올림이 있으면 최하위 비트 + 1

  ◆ 자리올림수가 없으면 얻은 결과에 다시 1의 보수를 취하고 (-)부호를 붙인다.

 

  1101(2) - 0101(2) 

13 - 5 = 8

 

0101-1101 

5 - 13 = -8

 

 

  1101(2)

+1010(2) - 감수의 1의 보수

10111(2)

+     1(2) 

  1000(2) -> 10진수 8이 된다.

 

0101-1101

 


 

 ■ 2의 보수에 의한 뺄셈

  ◆ 피감수에 감수의 2의 보수를 취한 후 더한다.

  ◆ 맨 위자리의 자리올림이 있으면 무시하고

  ◆ 자리올림수가 없으면 얻은 결과에 다시 2의 보수를 취하고 (-)부호를 붙인다.

 

 

 

컴퓨터가 내부에서 뺄셈을 계산하는 방식이다.

1101(2) - 0101(2) 0101(2) - 1101(2)
13(10) - 5(10) = 8(10) 5(10) - 13(10) = -8(10)

 

  1101(2) 피감수

  1010(2) 감수 -> 1의 보수

  +   1(2) 2의 보수

  1011(2) 감수

11000(2)

 

 

 

 ■ 곱셈과 나눗셈

곱셈은 반복적인 덧셈의 원리를 이용한다.

100 x 3 = ?

100+100+100 =...

 

3 x 100 = ?

3 + 3 + 3 ... = 

 

나눗셈은 반복적인 뺄셈의 원리를 이용한다.

 


 

 ■ 문자 자료의 표현

  ◆ 문자코드는 6~8비트로 구성된다.

8비트 경우 : OOOOOOOO

왼쪽은 ZONE BIT

오른쪽은 DIGIT BIT (항상4BIT)

 


 

 ■ BCD코드 (Binary Coded Decimal) 8421코드

  ◆ BCD코드는 숫자를 표현하기 위해 사용하던 4비트 코드를 확장한 코드

  ◆ 2개의 존비트, 4개의 디짓비트로 구성

  ◆ 6개의 비트로 64가지(2^6) 문자를 표현

 

1 BIT  2가지 표현 0,1
2 BIT  4가지 표현 00, 01, 10, 11
3 BIT  8가지 표현 000, 001, ~~~, 111
... ... ...
n BIT  2^n가지 표현 0  ~~~  2^n - 1

문제 유형은

n bit일때 몇 가지의 신호가 나오냐? 2^n

n bit일때 가장 큰 수는? 2^n - 1

 


 

 ■ 10진수 2364를 BCD코드로 나타내면

  ◆ 10진수 1자리를 2진수 4자리로 나타낸다.

  ◆ 0010 0011 0110 0100 (BCD)

 

 ■ 16진수 1F를 BCD코드로 나타내면

  ◆ 1x16^1 + 15 x 16^0 = 16+15 = 31 (10)

      16진수를 10진수로 고친다. 바로 고쳐본다. 2진수로도 변경할 수 있다.

  ◆ 0011 0001 (BCD)

 

 ■ EBCDIC 코드

 ■ BCD코드(6비트)를 8비트로 확장한 코드

... 

 


ASCII 코드

 ■ ASCII 코드

 ■ 미국표준협회가 제정한 데이터 처리 및 통신 시스템 상호간의 정보 교환용 표준코드

 ■ 1개의 패리티 체크 비트와 7개의 데이터 비트(3개의 존비트와 4개의 디짓비트)로 구성

 ■ 7개의 비트로 128가지(2^7) 문자를 표현

 

 ■ 패리티 비트 

CPU에서 데이터를 송신한다 (7비트)

101 0110 (원본데이터)

  -----> 

101 0010 (이 데이터로 잘못된 연산을 하고 액추에이터를 잘 못 구동하게 된다)

 

이러한 에러 데이터를 처리해보자. 에러를 확인하는 방법을 고안했다.

보낼때 1의 갯수를 세어서 홀수이면 체크비트에 1

짝수이면 체크비트에 0을 보낸다.

 

0 101 0110 (원본데이터)

  -----> 

0 101 0010 (1의 숫자는 홀수이므로 에러 발생)

 

패리티 비트는 오류를 검출하기만 하고 수정은 못한다.

패리티 비트 목적은 '에러 검출'

 

 

 ■ 만약 2개가 동시에 틀리면 에러검출은?

2개가 동시에 틀리는 경우는 거의 없다.