모듈식 산술 및 음수 인덱스
음수에 대한 표준 모듈로 연산(%)을 배열 인덱싱에 사용할 경우 예상치 못한 결과가 발생할 수 있습니다. 나머지가 음수일 수 있으며 이로 인해 잘못된 인덱스 값이 발생할 수 있습니다. 올바른 양수 배열 인덱스를 보장하려면 수정된 모듈로 함수가 필요합니다.
일반적인 해결 방법은 다음 공식을 사용하는 것입니다.
<code>GetArrayIndex(i, arrayLength) = (i % arrayLength + arrayLength) % arrayLength</code>
이는 입력 i
의 부호에 관계없이 [0, arrayLength - 1] 범위 내에서 양수 인덱스를 보장합니다.
맞춤형 모듈로 기능
더 깔끔한 코드를 위해서는 사용자 정의 mod
기능이 도움이 됩니다.
<code class="language-java">public static int mod(int x, int m) { return (x % m + m) % m; }</code>
이 함수는 m
을 추가하여 음수 나머지를 처리하여 양수 결과를 보장합니다.
최적화된 Modulo 기능
효율성을 향상하려면(모듈로 연산 감소) 다음 대안을 고려하십시오.
<code class="language-java">public static int mod(int x, int m) { int r = x % m; return r < 0 ? r + m : r; }</code>
이 버전은 나머지 r
가 음수인지 직접 확인하고 필요한 경우에만 m
를 추가합니다.
예
사용자 정의 mod
함수를 사용하면 예상되는 배열 인덱스 동작을 얻을 수 있습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!