■ 진수의 연산
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개가 동시에 틀리는 경우는 거의 없다.
'자동제어 > PC 제어' 카테고리의 다른 글
Visual C++ 6.0 단축키 (0) | 2020.05.14 |
---|---|
PC제어프로그램 4일차 (20.05.12) - Visual C++ 사용하기 (0) | 2020.05.12 |
PC제어프로그램 4일차 (20.05.12) - (0) | 2020.05.12 |
PC제어프로그램 3일차 (20.05.07) - 소수점 진법변환(8 <-> 2 <->16) (0) | 2020.05.07 |
PC제어프로그램 2일차 (200423) (0) | 2020.04.23 |