보수란 무엇일까? 말 그대로 “보충해주는 수”이다. 예를들어 1에대한 10의 보수는 9이고, 3에대한 5의 보수는 2이다.
n진수에는 n의 보수와 n-1의 보수가 존재한다. 10진수에는 10의보수와 9의보수가, 8진수에는 8의보수와 7의 보수가 존재한다.
즉, 내가 좋아하는 2진수밖에 모르는 바보,,,우리 컴퓨터는
2의 보수와 1의 보수를 사용한다.
2의 보수(2‘s Complement)는 어떤 수와 a의 값이2(10(2진수))가 되는 수 이다.
그럼 1의 보수(1’s Complement)는 어떤 수와 a의 값이 1(2진수)가 되는 수 이다.
2진수를 구성하는 수는 0과1 뿐이다. 2진수를 구성하는 숫자들에 대한 1의 보수는 다음과 같다.
0에 대한 1의 보수 : 0+x = 1 -> x = 1
1에 대한 1의 보수 : 1+x = 1 -> x = 0
즉, 2진수의 각 자리를 0이면 1로, 1이면 0으로 바꿔주기만 하면 1의 보수이다.
예를들어 53(10진수)의 2진수는 110101이고 이에 대한 1의 보수는 001010이 된다.
2의보수는 다음과 같다.
0에대한 2의 보수 : 0+x = 0 -> x = 0 (10이 되어야 하므로 최하위비트는 0이 되어야한다)
1에대한 2의 보수 : 1+x = 0 -> x = 1
즉, 1의 보수에 1을 더한 결과와 같다.
다시한번 예를들어 53(10진수)의 2진수는 110101이고 1의보수는 001010이라고 했으므로 이에 대한 2의 보수는 1의 보수에 1을 더한 결과인
001011이 된다.
이렇게 1의 보수에 1을 더해서 2의보수를 구해줄 수도 있지만, 더 쉬운 방법이 있다. 바로 1을 만나는 시점부터 1의 보수를 적용하는 것이다.
지금까지 한 방법이
이 방법이고, 내가 말한 방법은
이 방법이다. 결과는 똑같이 나온다. 두 방법 모두 알아두면 좋을 것 같다.
'학과 공부 > 이산수학' 카테고리의 다른 글
논리적 동치[이산수학] (2) | 2023.10.09 |
---|---|
명제, 논리연산자, 역,이,대우 [이산수학] (1) | 2023.10.07 |
컴퓨터에서의 수의 표현,보수의 10진수 변환, 보수의 연산[이산수학] (0) | 2023.10.07 |
수의 표현,bit,byte,word[이산수학] (1) | 2023.10.07 |
1. 수의 체계,수의 연산[이산수학] (0) | 2023.10.07 |