진수의 연산
■ 10진수의 덧셈
◆ 10진수는 각 자리의 최대수는 9
◆ 두 수를 합하여 10이 되면 바로 윗자리에 1을 더하고, 그자리는 0이 된다.
■ 2진수의 덧셈
◆ 2진수는 각 자리의 최대수가 1
◆ 연산 결과가 2가 되면 바로 윗자리에 1을 더해주는 자리올림이 생기고, 그자리는 0이 된다.
■ 진수의 연산
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이다.
진수의 뺄셈
■ 초기의 컴퓨터는 직접 뺄셈을 수행
■ 최근 대부분의 컴퓨터는 보수를 사용하여 뺄셈을 덧셈으로 바꾸어 처리한다.
(뺄셈을 보수에 의한 덧셈으로 한다)
보 수
■ 디지털 컴퓨터에서 음수를 표현하기 위한 수의 표현방법
■ 뺄셈을 용이하게 하기 위해 사용
■ 2진법에는 1의 보수와 2의 보수가 있다.
=> 보수를 사용하는 목적은 뺄셈을 하기 위한 방법인데
=> 다시말해서 뺄셈을 덧셈으로 용이하게 하는 방법
1의 보수 / 2의 보수
■ 1의 보수
◆ 각 자리의 0을 1로, 1을 0으로 변환
◆ 110100(2)의 1의 보수는 -> 001011(2) -> 1011(2)
■ 2의 보수
◆ 2의 보수는 1의 보수에 1을 더한다.
◆ 1011(2) + 1(2) = 1100(2)
◆ 110100(2)의 2의 보수는 -> 001100(2) -> 1100(2)
ex) 10101(2) -> 1의 보수는 01010 -> 2의 보수는 01011(2) -> 따라서 1011(2)
보수에 의한 뺄셈
■ 보수에 의한 뺄셈 (1의 보수에 의한 방법)
◆ 피감수에 감수의 1의 보수를 취한 후 더한다.
◆ 맨 윗자리의 자리올림이 있으면 최하위 비트 + 1
◆ 자리올림수가 없으면 얻은 결과에 다시 1의 보수를 취하고 (-)부호를 붙인다.
◆ 1101(2) - 0101(2)과 0100(2) - 1101(2)의 계산
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의 보수를 취하고 그 앞에 (-)부호를 붙인다.
◆ 1011(2) - 0101(2)와 0101(2) - 1011(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개가 동시에 틀리는 경우는 거의 없다.
'자동제어 > PC 제어' 카테고리의 다른 글
PC제어프로그램 4일차 - 문자 자료의 표현 외(20.05.12) (0) | 2020.06.17 |
---|---|
PC제어프로그램 3일차 - 문자 자료의 표현 외(20.05.07) (0) | 2020.06.17 |
PC제어프로그램 2일차 - 진수의 변환 (200423) (0) | 2020.06.17 |
PC제어프로그램 2일차 - 마이크로프로세서 (200423) (0) | 2020.06.17 |
PC제어프로그램 1일차 (200417) (0) | 2020.06.17 |