나름의 생각을 설명으로 풀어쓴 글
입니다.실제 이론과 내용은 이와 다를 수 있음
을 감안하고 읽어주시면 감사하겠습니다.보충해주는 수
10
진법에서) 3
에 대한 10의 보수
는 7
3
을 10
으로 만들기 위해서는 7
이 필요하다는 의미입니다.인터넷에서 1의 보수
에 대한 설명을 쉽게 0과 1을 바꾼 값
으로 설명하고 있습니다.
1001
의 1의 보수 -> 0110
2진수 1001
이 있을 때 위에서 설명한 정의를 적용하면 다음과 같습니다.
2
진법에서) 1001
에 대한 1의 보수
는 0110
다1001
을 1
로 만들기 위해서는 0110
가 필요하다.1001
+0110
은 1
이 아니기 때문에 1001
을 1
로 만든다는 문장은 매우 어색합니다. 1
로 만든다는 걸 모든 자리수의 값을 1로 만든다
로 바꿔보았습니다.1001
을 1111
로 만들기 위해서는 0110
이 필요하다.A
가 111...11
이 되기 위해 필요한 수 B
이다. 111...11
- A
는 A
에서 0과 1의 자리를 바꾼 값과 같다.2의 보수
는 1의 보수 +1
로 설명하고 있습니다.1001
의 2의 보수 -> 0111
(0110
+1
)2
진법에서) 1001
을 2
로 만들기 위해서는 0111
이 필요하다.2
로 만든다는 걸 다음 자릿수로 만든다
로 표현해 바꿔보겠습니다.1001
을 10000
으로 만들기 위해0111
이 필요하다.2
진법에서 2
라는 숫자는 존재하지 않고, 2
를 표현하려면 자릿수를 변경시켜야 하기 때문에 자릿수를 변경시킨다는 의미가 어색하지 않습니다.A
가 100...0(A보다 한자리 더 많은 수)
이 되 위해 필요한 수 B
이다.100...00
은 A
+A의 1의 보수
+1
이다.A
+A의 1의 보수
= 111...11
이기 때문A의 1의 보수
+1
을 묶어 A의 2의 보수
로 볼 수 있다.보수
는 뺄셈
(음수
)을 위해 도입된 개념이다.A-B
를 A+(-B)
로 바꾸어 계산해야 합니다.부호비트
를 통해 음수
를 표현하기도 합니다. 비트의 가장 왼쪽 값은 부호를 나타내는 칸으로 활용하기로 약속하는 것이죠.0
이면 양수
다1
이면 음수
다부호비트
가 무조건적인건 아닙니다. 1000
이 있을 때 이를 8
로 볼 것인지 -1
로 볼 것인지는 경우에 따라 다릅니다.1의 보수
, 2의 보수
둘 다 가능합니다.1의 보수
를 활용한 계산에는 1의 보수
를 구한 뒤 +1을 더하는 과정
이 필요합니다. 이는 결국 2의 보수
를 계산하는 것과 동일한 행위이므로 사실상 1의 보수를 활용한 뺄셈
과 2의 보수를 활용한 뺄셈
은 같습니다. A
-B
)빼는 수(B)
의 2의 보수
를 구합니다.(B'
)A
와 빼는 수의 2의 보수(B')
를 더합니다.A
-B
의 결과입니다.A
+B'
)의 2의 보수
를 구한 값에 -
부호를 붙여준 값이 A
-B
의 결과값입니다.(B>A인 경우입니다)