728x90
보수
- 컴퓨터에서 음, 양 구분 하기위해서 최상위 비트를 MSB(부호비트)로 사용해 1이면 음수 0이면 양수 표시
- "-" (마이너스)라는 개념이 없기 때문에 양수로 음수를 표현하는 방법 이라고 생각하면 됨
- 최상위 비트 1이면 음수, 0이면 양수
MSB로 마이너스 숫자 연산
- (+1) + (-1) = 0
0001 + 1001 = 1010
* 최상위 비트 1은 음수, 0은 양수로 봤을 때 2진수 계산의 결과로 0이 아닌 1010의 값을 얻었다. 이 처럼 확인 했을 때
MSB만으로 음수 표현과, 연산 시에 문제점을 확인 할 수 있다. 그래서 1의 보수가 나옴
1의 보수로 마이너스 숫자 연산
- (+15) + (-9) = 6
1111 + 0110 = 10101 (올림수 발생, +1) == 0110
* 오호 1의 보수를 사용하니까 음수 연산 시에 원하는 결과 값이나옴 오호라!! 하지만
- (+15) + (-15) = 0
1111 + 0000 = 1111 - (+1) + (-1) = 0
0001 + 1110 = 1111
* 15 - 15 = 0 즉, 2진수로 표현해도 0000 이라는 값이 나와야 하지만 1의 보수로 표현 할 수 있는 10진수 0은 2진수로 0000 뿐만 아니라 1111로도 표현 할 수 있기 때문에 문제점을 확인 할 수 있다. 그래서 2의 보수가 나옴
2의 보수로 마이너스 숫자 연산
- (+9) + (-15) = -6
1001 + 0001 = 1010 - (+15) + (-9) = 6
1111 + 0111 = 10110 (올림수 생략) == 0110 - (+1) + (-1) = 0
0001 + 1111 = 10000 (올림수 생략) == 0000
*MSB, 1의 보수 방식으로 연산시 발생되는 문제를 2의 보수(1의 보수 +1)를 통해서 해결 했다. 프로그램이나 전기적 신호 측면에서도 2의 보수로 연산 되는것을 알았다.
728x90