논리에는 뺄셈이없고, 뺄셈은 덧셈으로 끝납니다. 기억해야 할 것은 2를 보완하면 "1을 반전하고 더합니다." 십진수 연산을 할 때 99 + 3을 더하면 첫 번째 열은 9 + 3 = 2가됩니다.이 숫자는 맨 위에있는 캐리 슬롯으로 이동합니다. 두 번째 열 1 (캐리) + 9 (첫 번째 피연산자) +0 (두 번째 피연산자에 대한 placholder). 0은 1이되고, 3 번째 열은 1 + 0 + 0 = 1이며, 0을 전달하면 완료라고 부를 수 있습니다. 3 개의 행, 캐리, 첫 번째 피연산자, 두 번째 피연산자를 시각화 할 수 있습니다. 첫 번째 열에 캐리 슬롯을 사용할 수 있습니다. 이제 바이너리를 생각해보십시오. 열과 바이너리에서 똑같은 수학을 할 수 있습니다 (16 진수는 4 비트 그룹으로, 연필과 종이로 이것을 수행하면 16 진수를 개별 비트로 나눕니다). 그래서 우리는 학교에서 a + b = a + (-b) 우권을 알고 있고 우리는 이진수 -b가 두 개의 보수가 반전되어 하나를 더한다는 것을 압니다. 그래서 만약 당신이 단순히 반전하여 두 번째 피연산자로 사용한다면, 첫 번째 열의 캐리 슬롯에 1이 더해 지므로 0x1234 - 0xABEF는 0x1234 + (-0xABEF) = 0x1234 +와 같습니다. ~ 0xABEF) + 1 = 0x(~ 0x0ABEF) +1 (일부 패딩 추가) = 0xxF5410 + 1 = 0xF6645. 또는 16 비트로 자르려면 0x6645입니다. 32 비트를 수행하면 0xFFFF6645, 64 비트 0xFFFFFFFFFFFF6645가됩니다. 십진수 99 + 3 = 100 또는 0100 또는 00000000100처럼 숫자로 채우기를 원하는 위치에 따라 다릅니다.
0x1234 - 0x0005 = 0xxFFFFA + 1 = 0x01224를 수행하면 어떻게 될까요? 왼쪽 패딩은 0입니다. 빌려 줄 사람이 없었다. 다른 숫자는 빌린 것이고, 왼편은 영원한 것입니다. 또는 그것을 생각하는 또 다른 방법은 부정적인 대답입니다. 바이너리의 음수 값은 반전되어 하나를 오른쪽에 추가합니다. 따라서 0x001은 0xFFFFF ... FFFFE를 사용하여 alu 또는 레지스터에있는 비트 수만큼 더한 다음 0xFFFF .... FFFF를 얻습니다. 8 비트 레지스터 0xFF, 16 비트 0xFFFF, 32 0xFFFFFFFF이면. 위의 0xFFFF ... FF6645와 동일합니다. 그것을 뒤집고 0x99BA + 1 = 0x99BB = 39355 또는 실제로 -39355를 하나 더 추가하십시오.
0x1234 = 4660, 0xABEF = 44015, 계산기에서 4460 - 44015 = -39355.