Computer Architecture,  Study

[Computer Arch.] Carry and Overflow 차이

Computer system에서 arithmetic operation을 하면 연산에 대한 결과를 flag로 나타내는데 그 중에는 zero, negative, carry, overflow 등이 존재한다. 그 중에 carry와 overflow는 혼동하기 쉽다.

8-bit을 기준으로 덧셈 또는 뺄셈을 수행하게 되면 carry 또는 overflow가 발생될 수 있는 여지가 있는데, 각각에 대한 조건은 다음과 같다.

1. Carry

Carry는 최상위 bit (MSB)에서 올림이 발생되면 무조건 carry bit이 set 된다. 예를 들면 다음과 같다.

MSB에서 carry가 발생되면 무조건 carry는 1이 된다.

2. Overflow

Overflow는 연산 결과 값이, 현재 나타낼 수 있는 범위를 초과했다는 의미다. 이 때 조건은 C1 ^ (Exclusie OR) C2가 1이 되는 경우다.

앞선 carry에서 나온 예시의 경우 C1, C2 모두 1로 set이 되었기 때문에 exclusive의 결과 또한 0으로 나오기 때문에 overflow가 아니다.

위 경우 1+127은 C1에서 1이 set되며, C2에선 1이 set 되지 않는다. 따라서 overflow 조건을 만족한다.

위 경우는 C1에서 1이 set 되지 않으며 C2에서 1이 set 된다. 따라서 overflow 조건을 만족한다.

Carry와 overflow의 조건을 다음과 같이 정리해볼 수 있다.

C1C2Carry (C2)OverflowExample
00UnsetUnset1 + 1 = 2
01SetSet-128 + (-128) = 256
10UnsetSet1 + 127 = 128
11SetUnset1 + (-1) = 0

One Comment

Leave a Reply

Your email address will not be published. Required fields are marked *