2014-04-06 3 views
0

나는 다음과 같은 한 루프 내 루프 내부에서 실행하고 있습니다 :Modulus는 음수와 함께 어떻게 작동합니까?

for(int i = 0; i < 12; i = i + 2){ 
     System.out.println("i = " + i); 
     System.out.print("3 - i % 3 (i is at " + i + ") = " + (3 - i % 3)); 
     System.out.println(); 
     System.out.println("3 - i (" + (i) + ") = " + (3 - i)); 
    } 

나는 계수가 양수와 함께 정상적으로 작동하는지 이해,하지만 나는 그것이 음수 어떻게 작동하는지 이해하지? 누구든지 나에게 설명해 주시겠습니까?

감사합니다.

+0

[이것은 수학 질문입니까?] (http://en.wikipedia.org/wiki/Modular_arithmetic) –

+0

JLS가 알려주지 않은이 질문에는 무엇이 있습니까? –

+0

음, 실제로 그런 것 같아요? 하지만이 코드는 Java 코드와 관련되어 있으므로이 질문을하고 있습니다. – PrimalScientist

답변

1
4 % 3 == 1 
-4 % 3 == -1 
4 % -3 == 1 
-4 % -3 == -1 

첫 번째 숫자의 부호를 변경하면 결과 부호가 변경됩니다. 두 번째 숫자의 기호는 중요하지 않습니다.

이것은 많은 언어 (C, C++, Java, Javascript)에서 유효하지만 모든 언어 (Python, Ruby)에서는 그렇지 않습니다.

+0

그게 전부예요. 고마워요. Paul – PrimalScientist

+1

@PrimalScientist - "훌륭합니다"라고 대답하면이 대답을 받아 들여야합니다. Stack Overflow 방식입니다. –

+1

나는 있습니다. 나는 8 개의 미뉴에트를 기다릴 필요가있다. :) – PrimalScientist

2

a mod b은 양의 정수에 대해 매우 잘 정의되어 있습니다. ab. a 또는 b이 음수이면 어떻게됩니까? 해당 기본 정의와 일치하는 세 가지 선택 사항이 있습니다.

  1. a mod b은 항상 양수입니다.
  2. a mod ba과 같은 부호를 갖는다.
  3. a mod b에는 b과 같은 부호가 있습니다.

다른 언어는이 세 가지 중 하나를 선택합니다. 단수 정답은 없습니다.

+0

귀하의 의견 데이비드에 많은 감사드립니다. :) – PrimalScientist

관련 문제