전제 조건 – 음의 이진수 표현
1의 보수 이진수는 그 안의 모든 비트를 토글하여 얻은 또 다른 이진수입니다. 즉, 0비트를 1로, 1비트를 0으로 변환합니다. 예:
Let numbers be stored using 4 bits 1's complement of 7 (0111) is 8 (1000) 1's complement of 12 (1100) is 3 (0011)>
2의 보수 이진수의 1의 보수는 이진수의 1의 보수에 1을 더한 것이다. 예:
Let numbers be stored using 4 bits 2's complement of 7 (0111) is 9 (1001) 2's complement of 12 (1100) is 4 (0100)>
이러한 표현은 부호 있는 숫자에 사용됩니다.
그만큼 주요 차이점 1의 보수와 2'의 보수 1'의 보수에는 0(영) — 00000000(양수 0(+0)) 및 11111111(음수 0(-0))의 두 가지 표현이 있다는 것입니다. 반면 2'의 보수에는 0에 대한 표현이 하나만 있습니다 — 00000000(0). 왜냐하면 11111111(-1)에 1을 더하면 9비트 길이인 100000000을 얻게 되기 때문입니다. 8비트만 허용되므로 가장 왼쪽 비트는 폐기(또는 오버플로)되어 양수 0과 동일한 00000000(-0)을 남깁니다. 이것이 2의 보수가 일반적으로 사용되는 이유이다.
또 다른 차이점은 1의 보수를 사용하여 숫자를 더하는 동안 먼저 이진 덧셈을 수행한 다음 엔드 어라운드 캐리 값을 추가한다는 것입니다. 그러나 2'의 보수는 0에 대해 하나의 값만 가지며 캐리 값이 필요하지 않습니다.
n 비트 수에 대한 1의 보수 범위는 -2부터입니다.n-1-1~2n-1-1 반면 n 비트에 대한 2의 보수 범위는 -2부터입니다.n-12로n-1-1.
스파크 튜토리얼
2 개가 있습니다n-11의 보수와 2의 유효한 숫자N2의 보수로 유효한 숫자.
표 형식의 1의 보수 표현과 2의 보수 표현의 차이점:
기준 | 1의 보수 | 2의 보수 |
정의 | 이진수의 1의 보수는 모든 비트를 반전시켜 얻습니다. | 2진수의 2의 보수는 1의 보수에 1을 더하여 구합니다. |
n비트로 표현할 수 있는 값의 범위 | -2^(n-1) + 1에서 2^(n-1) – 1 | -2^(n-1)에서 2^(n-1) – 1 |
0에 대한 표현 수 | 두 가지 방식(모두 0과 모두 1)으로 표현될 수 있습니다. | 단방향(모두 0)으로만 표현할 수 있습니다. |
양수와 음수의 추가 | 부호 없는 바이너리 추가와 동일합니다. | 부호 없는 바이너리 추가와 동일합니다. |
숫자 빼기 | 큰 숫자에서 작은 숫자를 뺀 다음 결과에 부호 비트를 추가합니다. | 이진 덧셈을 사용하여 양수에 음수를 더합니다. |