<CC 정리>
C: 연산 시 carry 발생 여부
N: 연산 결과의 최상위 비트(0: 양수 1: 음수)
V: 연산 시 오버플로우 발생 여부
V = Cout xor Cout-1(같으면 0, 다르면 1)
Z: 연산 결과가 0인지?(아니면 0, 맞으면 1)
<기본 공통 사항>
unsigned와 signed의 하드웨어 처리 방식은 동일
: CC를 통해 결정
ALU의 부호 비트 무시
계산 무조건 덧셈만 함
Carry는 무시
<Signed 수의 연산 시 Overflow>
V와 N만 판단한다
V=1: overflow → N: 반대로 해석
V=0: 정상 → N: 그대로 해석
example)
+6 00000110
-3 111111101
= 1 00000011
V = Cout xor Cout-1 = 0 xor 0 = 0
<Unsigned 수의 연산 시 Overflow>
부호 없는 수의 뺄셈에서 음수 발생 시
→OVERFLOW
이를 위해 뺄셈하는 경우에는 생성되는 캐리 값의 보수가 C에 저장된다.
C=0: 앞의 수가 큼. 정상 연산
C=1: 뒤의 수가 큼. OVERFLOW