우리가 흔히 일상에서 쓰는 숫자들은 10진수이다.
이를 0과 1만 사용하여 2진수로도 나타낼 수 있고
0~8까지만 사용하여 8진수, 0~16까지만 사용하여 16진수로도 나타낼 수 있다.
1) 일의 자리부터 2^0 십의 자리는 2^1로 생각해서 더해주면 된다.
ex) 0 (2) = 0 , 10(2) = 2+0 = 2, 11(2) = 2+1 = 3, 101(2) = 4+0+1 = 5
(2)는 이진수를 나타낸다.
이와 마찬가지로 16진수는 0~15까지를 사용하여 나타낸다. 이때 10부터는 A로 나타낸다.
10 | A |
11 | B |
12 | C |
13 | D |
14 | E |
15 | F |
ex) 4AF(16) = 16^2X4 + 16^1X10 +16^0X15 = 1199
2) 그렇다면 이러한 2진수의 덧셈은 어떻게 할까?
10진수의 덧셈에서는 10을 넘기면 다음 자리에 1을 더해주었다. 이와 마찬가지로 2진수의 덧셈에서도 1과 1을 더할 때 다음 자리에 1을 더해준다.
EX) 10진수 EX) 2진수
1 1 1 1 3 7 3 4 1 0 1 1 + 5 1 6 8 +0 0 1 1 --------------- -------------- 8 9 0 2 1 1 1 0 |
3) 2진수로 부호를 나타낼 수 있을까?
정답은 나타낼 수 있다. 하지만 방법이 조금 다르다.
방법으로는 두가지가 있는데 첫 번째는 부호 및 크기의 2진수 표기법이다.
예를 들어 숫자 6을 2진수로 표현하면 110(2)이다. ( 4+2+0 = 6 )
이때 앞에 한자리를 더해 +/- 를 나타낸다.
+6 : 0110
-6 : 1110
으로 나타낼 수 있다.
하지만 이렇게 나타내면 덧셈시 계산 결과의 오류가 날 수 있고, 0을 표시하려 할 때 1000과 0000의 두 가지 방법이 생기는 문제점이 있다.
그러므로 두번째 방법은 2의 보수를 사용하여 부호를 나타내는 것이다.
이 방법은 최상위 비트의 값이 2^(N-1) 대신 -2^(N-1)이라는 것을 제외하면 부호 없는 2진수와 똑같다.
먼저 구한 2진수를 반전시킨다음 1을 더하면 된다.
예를 들어 숫자 -2를 나타내려면
먼저 2(10) = 0010(2)
이다. 그러므로 0010을 반전시키면 1101(2) 이 되고 여기에 1을 더해주면
1110(2) 이 된다. 이것이 -2(10)을 이진수로 표현한 것이 된다.
여기서 주의해야 할 점은 덧셈을 할 때 N번째 비트에서 발생한 N+1 번째 비트는 버려야 한다!!