CS/컴퓨터 과학 얕은 지식
오버플로우와 언더플로우
Unagi_zoso
2022. 5. 24. 20:59
용어 정의 |
오버플로우(Overflow)는 어떠한 자료형이나 데이터 구조가 표현할 수 있는 범위의 최대치를 넘어서는 곳에 접근하는 것을 일컫는 용어입니다.
유사하게, 언더플로우(Underflow)는 표현범위의 최소치보다 낮은 곳에 접근하려는 것을 일컫는 용어입니다.
위의 정의에서 볼 수 있듯 표현범위의 한계가 있는 어느 자료형이나, 데이터 구조에서도 일어날 수 있으며
이를 주의하여 프로그램을 만들어야합니다. (연산, 버퍼나 스택같은 메모리 구조에서도 일어납니다.)
예시 |
자료형을 예로 부호가 있는 8비트의 경우 표현할 수 있는 범위가 -128 ~ +127입니다
먼저 오버플로우의 예로 부호가 있는 8비트 자료형의 최대 표현값 127 (01111111(2)) 이에 1을 더하게 되면 -128 10000000(2)로 음수로 표현할 수 있는 가장 작은 수가 됩니다.
언더플로우의 경우에는 위 자료형의 최소 표현값 -128에 1을 빼서 표현값보다 낮은 곳에 접근하려하면 127 (01111111(2))
양수로 표현할 수 있는 가장 큰 값이 됩니다.
마치 출발점과 도착점이 같은 경기가 있을 때 출발점에서 역주행하여 도착점에 가장 가까운 우승후보가 되는 것과 유사합니다. (당연히 시합에서는 반칙입니다!)
긴 글 읽어주셔서 감사합니다. 틀린 부부이나 보충할 부분이 있으면 알려주세요.