티스토리 뷰


컴퓨터는 덧셈과 뺄셈을 2의 보수를 이용해 계산합니다.

정수는 양수와 음수로 이루어져 있으므로 양수, 음수의 덧셈과 뺄셈을 모두 살펴보아야합니다.

이 계산에서는 저장공간이 8비트로 이루어져 있다고 가정하고 해보겠습니다. (8개의 숫자밖에 저장 못함)


- 먼저 양수 + 양수 의 계산을 해보겠습니다.

4 + 5인 경우, 먼저 컴퓨터 내부에서는 2진수로 계산이 되므로 2진수로 먼저 변환해 보겠습니다.

4 -> 00000100

5 -> 00000101

그리고 두 수를 더하면 (2진수 덧셈에서는 0과 1을 더하면 1이되고, 1과 1을 더하면 0이되고 자리올림이 일어납니다.)

00000100

00000101

------------

00001001

이 됩니다. 이는 10진수로 9입니다.


- 다음으로 양수 + 음수를 계산해 보겠습니다.

4 - 5인 경우, 4 + (-5) 로 계산합니다.

 4 -> 00000100

-5 -> 11111011

그리고 두 수를 더하면

00000100

11111011

------------

11111111

이 됩니다. 이는 10진수로 -1이 됩니다. (2의 보수로 변환 : 11111111->00000000->00000001)


- 마지막으로 음수 + 음수를 계산해 보겠습니다.

- 4 - 5인 경우, (-4) + (-5) 로 계산합니다.

-4 -> 11111100

-5 -> 11111011

그리고 두 수를 더하면

11111100

11111011

-----------

11110111

이 됩니다. (저장 공간이 8개 밖에 없으므로 최상위 비트가 넘어가는 것은 무시합니다.)

이는 10진수로 -9가 됩니다. (2의 보수로 변환 : 11110111 -> 00001000 -> 00001001)


* 주의해야 할 점

덧셈과 뺄셈에서는 오버플로우를 조심해야 합니다.

예를 들어 128 + 128 을 계산해 보겠습니다.

128 -> 10000000

128 -> 10000000

두 수를 더하면

10000000

10000000

-----------

00000000

최상위 비트는 저장공간이 8개 밖에 없으므로 저장되지 않습니다.

따라서 정답은 256이 아니라 0 이 나오게 됩니다. 

이러한 부분을 막기 위해서는 정수의 저장공간을 충분히 확보하거나, 다른 방법에 의해서 계산하는 것이 필요합니다.




'컴퓨터' 카테고리의 다른 글

Unicode - UCS-2, UTF-16, UTF-8, UTF-32  (1) 2016.11.10
ASCII 와 ANSI encoding  (0) 2016.11.09
왜 숫자는 0부터 세어야 하는가?  (1) 2016.11.08
[컴퓨터개론] 2의 보수  (1) 2016.11.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함