반응형

정수형 및 값의 범위가 있는 타입의 중간값을 구할때 실수하는 것이 있다.

 

int mid = (a  + b) /2 

 

이 경우 a 와 b 가 작은값이면 상관없지만 int 범위 2,147,483,647 가까이 되는 숫자 21억 등의 숫자를 계산할때는 위와 같은 숫자 계산은 오버플로우가 난다.

 

그러므로 다음과 같이 수정해야 하다.

int start = 2_000_000_000;
int end = 1_000_000_000;

int mid = start + (end - start) / 2;

 

반응형

+ Recent posts