컴퓨터는 ALU에서 연산을 수행합니다. 그렇다면 컴퓨터는 어떻게 연산을 수행할 수 있을까요? 오버플로우가 발생하는지는 어떻게 알 수 있을까요? 구체적으로 알아보겠습니다.
정수의 덧셈
먼저 컴퓨터는 이진수를 사용합니다. 4비트로 표현할 수 있다고 가정할 때 정수의 덧셈을 확인해보겠습니다.
3+4 = 7 입니다. 이는 이진수로 표현하면 0011(2) + 0100(2)입니다. 이를 이진수 연산을 통해 각 자리 수를 더해주면 0111(2) = 7이라는 결과가 나옵니다.
정수의 뺄셈
-3 + 3 = 0입니다. 이를 이진수로 표현하면 1101(2) + 0011(2) = 0입니다. 4비트를 넘어가는 수는 버리기 때문입니다.
정수의 덧셈,뺄셈 오버플로우
앞서 덧셈과 뺄셈은 간단한 연산이므로 넘어가고 오버플로우가 발생하는지의 여부를 판단하는 방법에 대해 알아보겠습니다. 부호가 다를 때는 오버플로우를 신경쓰지 않아도 되지만 두 수의 부호가 같을 때는 오버플로우가 발생할 가능성이 있으므로 체크해야합니다.
4비트로 표현할 수 있는 정수는 -8 ~ 7입니다. 그렇다면 -7 - 3 = -10 과같이 오버플로우가 발생하는 경우는 어떻게 되는지 알아보겠습니다. 결과로 10110(2)이 나오지만 비트 수를 넘어가는 것을 제외하면 0110(2)입니다.
이 것이 오버플로우인지 아닌지를 체크하기 위해서는 맨 왼쪽의 수, 그 다음번째수의 입력 올림수를 체크해보면 됩니다. 각각의 올림수가 1, 0 이므로 다릅니다. 이렇게 다른 경우 오버플로우가 발생했다고 할 수 있습니다. 오버 플로우가 발생하지 않는 (-3) + (-3) 계산을 비교해보겠습니다.
올림수가 1, 1로 같습니다. 따라서 오버플로우가 발생하지 않는 경우입니다. 실제로 -6은 -8 ~ 7 사이의 값으로 오버플로우가 발생하지 않는 것을 알 수 있습니다.
'CS > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] 명령어의 주소 지정 방식 (0) | 2022.10.12 |
---|---|
[컴퓨터구조] 명령어 집합 분류 (1) | 2022.10.10 |
[컴퓨터구조] 컴퓨터 시스템 (0) | 2022.10.07 |
[컴퓨터구조] 명령어 집합 (0) | 2022.10.06 |
[컴퓨터구조] 컴퓨터 성능 계산과 암달의 법칙 (0) | 2022.09.21 |