컴퓨터는 산술연산을 2진법으로 계산합니다. 컴퓨터는 0과 1 만 알기때문입니다.
1. 뺄셈
3-2 = ? 3+(-2)같다. 3을 2진법의 수로 바꾸면 0000 0011 이렇게 됩니다.
앞에 0000이 더 있는 이유는 2진법에서 음수를 나타내주기 위해서는 자리수가 좀더 필요 하게 되기때분이에요. 2를 2진수로 바꾸면 0000 0010입니다.
이수를 2의 보수로 바꿔 주면 그게 이진법에서의 -2가 됩니다. 2의 보수로 바꿔주는 방법은 각 자리수를 0은 1로 1은 0으로 바꿔 줍니다. 바꿔보면 1111 1101이 됩니다. 이 상태에서 1을 더 더해주면 그 수가 -2가 되는 것입니다. 1111 1110이렇게 됩니다.
3과 -2를 더해 봅시다
0000 0011 + 1111 1110 을 하면 1 0000 0001이렇게 되지요. 저는 처음에 8자리를 사용했으니 9번째 자리로 넘어간1은 무시해줍니다. 그럼 0000 0001이 됩니다.
답이 1이 되었으니 뺄셈을 덧셈으로 연산한 것과 같습니다.
2. 곱셈, 나눗셈
곱셈과 나눗셈은 방법이 여러가지가 있습니다.
곱셈은 더하기를 여러번하는 방법도 있습니다. 뺄셈은 빼기를 여러번 해도 되고 또다른 방법은 쉬프트 연산이라는 겁니다. 2진수로 바꾼 후에 숫자를 좌우로 필요한 만큼 밀어주는 것입니다. 0110을 왼쪽으로 1만큼 쉬프트 하면 1100이 되는 겁니다. 그럼 처음수에 2를 곱한 효과가 됩니다.
반대로 오른쪽으로 1만큼 쉬프트 하면 0011이 됩니다. 그럼 처음수를 2로 나눈것과 똑같은 결과가 됩니다.
2번 쉬프트하면 곱하기4 또는 나누기 4, 3번 쉬프트하면 곱하기 8, 나누기 8 이런 식으로 되는 겁니다.
이런 생각을 하다보면 곱하기 3은 어떻게 하나 하고 생각 하실수 있는데요. 쉬프트 연산과 덧셈을 동시에 이용하면 됩니다. 3=2+1이니 1번 왼쪽으로 쉬프트를 시키고 곱하기 1한만큼 곱해주면 됩니다.