넘치게 채우기

INT_MAX를 라이브러리 없이 표현해보자. 본문

개발/토막글 모음

INT_MAX를 라이브러리 없이 표현해보자.

riveroverflow 2024. 5. 9. 16:37
728x90
반응형
int INT_MAX = (unsigned int) -1 >> 1;
 

본론부터 말하자면, 위와 같다.

 

1을 4비트 + 부호비트로 표현하면, 00001이다.

-1은? 2의 보수를 취하여 11111이다.

 

unsigned로 형변환하면서, MSB인 부호 비트도 수 표현 비트로 바뀌면서, -1은 1이 32개 나열된 비트로 바뀐다.

이 값에서 다시 오른쪽 시프트 연산을 하여 최하위 비트를 자르면? 1이 31개 나열된 채로, 2^31-1로 된다. 즉, INT_MAX의 값이 된다.

728x90
반응형