수업 시간에 배운 내용을 복습하다가 이해 안 가고 헷갈리는 부분이 발생했다.
나중을 위해 이에 대해 정리하고자 한다.
우선 2의 보수를 사용하는 이유는 0 때문인데 현실세계에서의 0은 부호가 없음
그러나 컴퓨터에서는 음수와 양수를 나타내기 위한 방법중 하나로 제일 왼쪽비트에 0이면 양수 1이면 음수 이렇게 나타내는 방법이 있는데 이런식으로 나타낼경우 -0과 +0이 공존하는 문제가 발생한다.
하지만 2의 보수의 경우는 0이 하나만 존재한다.
8bit의 간단한 계산으로 증명해보겠다.
우선 1의보수는 +0을 나타내는 00000000과 -0을 나타내는 11111111이 이렇게 두가지가 있다.
2의 보수의 경우는 00000000에 2의 보수를 취하면 11111111(0을 1로 뒤집고) + 1을 해주면 100000000이 나오는데
8bit로 나타내기 위해서는 제일 왼쪽 1이 사라진다. (10000은 9bit이기 때문에)
그러므로 2의보수로는 0이 한가지만 존재하게 된다.
다음으로, 2의 보수를 이용한 컴퓨터의 계산을 알아보도록하자. 컴퓨터는 뺄셈이란게 없다.
예를들어서 8 - 6을 한다고 해보자. 컴퓨터에서 이 식을 계산하는 과정은 6을 (-6)으로 바꾸고 8과 더하는 것이다.
이 과정에서 2의 보수가 쓰이는데 컴퓨터는 이진수를 쓰므로 8 - 6은 1000 - 0110이다.
2의 보수를 적용하는 방법은 1과 0을 뒤집고 +1을 해주면 된다.
즉, 0110은 1010이 된다. 이 1010은 2의 보수를 취한 수로 -6을 뜻하게 되는 것이다.
그럼 1000 + 1010 = 10010인데 이렇게 제일 왼쪽 비트에서 자리올림이 발생한경우는
(즉, 결과가 양수라는 뜻) 제일 왼쪽비트의 1을 없애주면 된다. 그럼 답이 0010으로 십진수로 나타내면 2가된다.
만약 자리올림이 발생하지 않았다면 계산한 답이 음수라는 뜻임.
그럼 2의 보수의 과정을 반대로 해주어서 변환을 해주어야 함.
즉, 답이 x라고 가정하면 x - 1을 한 후에 1과 0을 뒤집어주고 거기에 -기호만 붙이면 원하는 답이 나온다.
'전공 수업 CS > Computer Architecture' 카테고리의 다른 글
[컴퓨터구조] 주기억장치 DRAM | DRAM의 동작원리 (0) | 2022.11.17 |
---|---|
[컴퓨터 구조] 카르노맵 (0) | 2022.10.12 |
[컴퓨터 구조] 부동 소수점 & 바이어스 수 biased number 127 (0) | 2022.09.23 |
[컴퓨터 구조] 1의 보수와 2의 보수 표현법 이해 (1) | 2022.09.23 |
[컴퓨터 구조] 실수 표현 - 실수 표현 | 단일 정밀도 부동 소수점 | 지수, 바이어스 값 |IEEE 754 (1) | 2022.09.22 |