본문 바로가기
CS

[CS] Overflow

by ahj 2021. 9. 21.

컴퓨터는 정수형 숫자를 이진법(binary)의 형태로 저장한다.

4비트 공간에 숫자를 저장한다고 치면

-8~+7까지의 숫자를 받아서 저장할 수 있다

 

안그래도 이진법에다가 음수를 어떻게 저장할까 궁금하던 차에 파이썬으로 풀었던 기본 100제를 C++로 다시 풀면서 59번 문제를 만났는데 다시 이해하게 되었다. 분명 풀었던 문제인데도 따로 정리하거나 적어두질 않으니 또 까먹지

 

만약 4비트 공간이 주어지고

+7 -> 0111로 저장이 된다. 여기에 1을 더해주면??

+8이 된다고 생각할 수 있지만 음수까지 저장해야하기 때문에 -8이 된다.

-8 -> 1000에서 1을 빼줘도 -9가 아닌 +7이 된다.

 

이러한 것을 오버플로우(overflow, 넘침)라고 한다.

 

비트단위 연산자 ~(bitwise not)에 따르면

~n = -n - 1

~7 = -7 - 1 = -8

이 되는 것이다.

 

컴퓨터가 갖는 이진법만의 재밌는 특징이다.

'CS' 카테고리의 다른 글

[CS] 재귀함수 vs for문  (0) 2021.10.03
[CS] 비트단위(bitwise) 연산자  (0) 2021.09.21

댓글