2의 보수 = 맨 앞의 비트를 바꾸는 역할을 함
(0 -> 1, 1 -> 0)
부호를 바꾸는 역할
* 보수 : 양수를 음수로 바꾸는 것
* 보수를 구하는 방법 : 1은 0으로, 0은 1로 바꾼 후, 1을 더한다
- 음의 10진수 정수를 2진수로
1) 해당 정수을 양수로 바꾸어 2진수로 표현한 후,
2) 구한 2진수에서 1은 0으로, 0은 1로 바꾼 다음,
3) 1을 더한다.
- 2진수를 음의 10진수 정수로
1) 2진수에서 1은 0으로, 0은 1로 바꾼 다음,
2) 바꾼 2진수에서 1을 더하고
3) 더한 2진수를 10진수로 변환하여, 음을 붙인다.
1. 음수를 2진수로 변환
(음수 10진수) -> (양수 10진수) -> (2진수) -> (1/0 변환) -> (1 더하기) -> (2진수)
2. <음수>2의 보수화된 2진수(맨처음 비트가 1인 이진수)를 10진수로 변환
(음수화된 10진수) <- (음수화) <- (1 더하기) <- (10진수로 변환) <- (1/0 변환) <- (2진수)
3. <양수>맨처음 비트가 0인 양의 이진수(2의 보수 계산을 역으로 할 필요없음)를 10진수로 변환
(10진수) <- (2진수)
4. 양수를 2진수로 변환
(양수 10진수) -> (2진수)
1. 음수를 2진수로 변환
ex) -3을 2진수로 표현
-> 00000011 (3을 2진수로 표현한다)
-> 11111100 (1은 0으로, 0은 1로 바꾼다)
-> 11111101 (1을 더한다)
ex) -2를 2진수로 표현
-> 00000010 (2를 2진수로 표현한다)
-> 11111101 (1은 0으로, 0은 1로 바꾼다)
-> 11111110 (1을 더한다)
2. <음수>2의 보수화된 2진수(맨처음 비트가 1인 이진수)를 10진수로 변환
ex) 11111110
-> 00000001 (1은 0으로, 0은 1로 바꾼다)
-> 1 + 1 = 2 (1을 더한다)
-> -2 (여기에 음수를 취해 주면 10진수로 바뀐다)
ex) 11111101
-> 00000010
-> -(2 + 1)
-> -3
ex) 11111110
-> 00000001
-> -(1 + 1)
-> -2