네거티브 모듈로의 과제 탐색
음수를 처리할 때 모듈로 연산자(%)가 까다로울 수 있습니다. 양의 정수에 대해서는 나머지를 원활하게 반환하지만 음수에 대한 동작은 종종 혼란을 야기합니다. 이 연산자는 나눗셈 후 나머지를 제공합니다.
네거티브 모듈로의 문제
길이가 3인 배열을 생각해 보세요.
<code>i % 3 = 4 -> 1 3 -> 0 2 -> 2 1 -> 1 0 -> 0 -1 -> -1 -2 -> -2 -3 -> 0 -4 -> -1</code>
양수 범위를 순환하는 양수 대응과 달리 음수 나머지가 어떻게 음수로 유지되는지 확인하세요.
네거티브 모듈로 솔루션
음수가 예상대로 작동하도록 하려면(래핑) 사용자 정의 함수가 필요합니다.
<code class="language-c++">int GetArrayIndex(int i, int arrayLength) { int r = i % arrayLength; return (r < 0) ? (r + arrayLength) : r; }</code>
작동 방식
이 함수는 arrayLength
가 음수인 경우에만 r
를 나머지(r
)에 교묘하게 추가합니다. 이는 원하는 모듈로 동작을 모방하여 음수 나머지를 양수 범위로 "래핑"합니다.
실습
3요소 배열로 함수를 테스트해 보겠습니다.
GetArrayIndex( 4, 3) -> 1 GetArrayIndex( 3, 3) -> 0 GetArrayIndex( 2, 3) -> 2 GetArrayIndex( 1, 3) -> 1 GetArrayIndex(0, 3) -> 0 GetArrayIndex(-1, 3) -> 2 GetArrayIndex(-2, 3) -> 1 GetArrayIndex(-3, 3) -> 0 GetArrayIndex(-4, 3) -> 2
이 사용자 정의 함수는 음의 모듈로 연산을 효과적으로 처리하여 일관되고 예측 가능한 결과를 제공합니다. 이제 예상치 못한 동작이 발생하지 않고 자신있게 음수 모듈로 작업을 수행할 수 있습니다.
위 내용은 음의 모듈로 연산을 올바르게 처리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!