logo

1의 보수 표현과 2의 보수 표현의 차이점

전제 조건 – 음의 이진수 표현

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)으로만 표현할 수 있습니다.
양수와 음수의 추가 부호 없는 바이너리 추가와 동일합니다. 부호 없는 바이너리 추가와 동일합니다.
숫자 빼기 큰 숫자에서 작은 숫자를 뺀 다음 결과에 부호 비트를 추가합니다. 이진 덧셈을 사용하여 양수에 음수를 더합니다.