본문 바로가기
CS/컴퓨터 과학 얕은 지식

오버플로우와 언더플로우

by Unagi_zoso 2022. 5. 24.

 

  용어 정의

오버플로우(Overflow)는 어떠한 자료형이나 데이터 구조표현할 수 있는 범위의 최대치를 넘어서는 곳에 접근하는 것을 일컫는 용어입니다.

 

유사하게, 언더플로우(Underflow)는 표현범위의 최소치보다 낮은 곳에 접근하려는 것을 일컫는 용어입니다.

 

위의 정의에서 볼 수 있듯 표현범위의 한계가 있는 어느 자료형이나, 데이터 구조에서도 일어날 수 있으며

이를 주의하여 프로그램을 만들어야합니다. (연산, 버퍼나 스택같은 메모리 구조에서도 일어납니다.)

 

 

  예시

자료형을 예로 부호가 있는 8비트의 경우 표현할 수 있는 범위 -128 ~ +127입니다

 

먼저 오버플로우의 예로 부호가 있는 8비트 자료형의 최대 표현값 127 (01111111(2)) 이에 1을 더하게 되면 -128 10000000(2)로 음수로 표현할 수 있는 가장 작은 수가 됩니다.

 

언더플로우의 경우에는 위 자료형의 최소 표현값 -1281을 빼서 표현값보다 낮은 곳에 접근하려하면 127 (01111111(2))

양수로 표현할 수 있는 가장 큰 값이 됩니다.

 

마치 출발점과 도착점이 같은 경기가 있을 때 출발점에서 역주행하여 도착점에 가장 가까운 우승후보가 되는 것과 유사합니다. (당연히 시합에서는 반칙입니다!)

 

 

 

 

 

긴 글 읽어주셔서 감사합니다. 틀린 부부이나 보충할 부분이 있으면 알려주세요.

댓글