Overflow of Int

코딩테스트에서 값의 범위를 참고하여 오버플로우하지 않도록 형을 고려하면 되겠다! ex) 우아한 테크코스 테스트 문제 중. 돈 담을 지갑이 최대한 가볍도록 큰 금액의 화폐위주를 선택할 때. 변수 money는 1이상 1,000,000 이하인 자연수.

Overflow : 표현가능한 범위를 넘는 것.

최댓값 + 1 = 최솟값, 최댓값 = 최솟값 -1

ex) 십진수 9999 + 1 = 0000(최솟값), 0000 - 1 = 9999(최댓값)

이진수 1111 + 1 = 0000(최솟값), 0000 - 1 = 1111(최댓값)

부호없는 정수(4bit)의 경우, 표현 범위가 '0~15' 이므로 이 값이 계속 반복되고, 부호있는 정수(4bit)의 경우, 표현 범위가 '-8부터 7' 이므로 이 값이 무한히 반복된다.

ex) 0 ~ 15 : 15(M) + 1 = 0(m), 0(m) - 1 = 15(M)

-8 ~ 7 : 7(M) + 1 = -8(m), -8 - 1 = 7(M)

n bit 표현 범위

n bit의 2진수 표현 범위 : 2^(bit수) - 1

ex) 2bit : 00(0),01(1),10(2),11(3) => 2^(2) - 1.

16bit : (2^16)-1 = 65536개

short 타입의 표현 범위 : 2byte = 2 x 8bits = 16bits. 부호 있는 타입이므로 -2^15 ~ (2^15)-1

char 타입의 표현 범위 : 2byte = 2 x 8bits = 16bits. 부호 없는 타입이므로 0 ~ (2^16)-1

Last updated