"모듈로 n"이란 임의의 정수값을 n으로 나눈 나머지로 표현하는 방법을 말한다. 여기서 n은 해당 타입의 최대값 + 1을 의미한다. 예를 들어 unsigned int의 최대값이 65535라면 65531부터 65540까지의 수는 "모듈로 65536 (65535 + 1)" 연산을 통해 아래와 같이 표현된다.
65531, 65532, 65533, 65534, 65535, 0, 1, 2, 3, 4
오버플로우가 발생한 65536부터 모듈로 연산을 통해 범위 안의 값으로 조정되는것을 잘 보기 바란다.
이 방법은 음수값을 범위 안의 값으로 바꾸는 경우에도 사용된다. 일단 나누기 연산은 아래와 같이 수학적으로 표현 할 수 있다.
제수(나누는 수) * 몫 + 나머지 = 피제수 (나누어지는 수)
그래서 "모듈로 65536" 연산을 통해 음수 -2를 변환하면 아래와 같다.
65536 * -1 + 65534 = -2
따라서 범위 안으로 조정된 값은 65534가 나오게 된다.
<관련글>
보수표현: http://superkkt.com/287
유부호 정수형의 음수 표현 방법: http://superkkt.com/286

comments
comments rss (+댓글 쓰러가기)