2012-07-06 4 views
2
내가 루비 자바에서 오는하고

이 -7 모드 3 = 2 개 퍼즐 나에게왜 Ruby에서 -7 mod 3 = 2입니까?

+2

왜 당신을 괴롭혀 야합니까? 사실입니다. -7 mod 3 = 2 mod 3 = -1 mod 3 등등. 하나의 특별한 표현이 선택되어야하지만, Ruby는 비 음수의 것을 선택하는 것처럼 보입니다. (vs java는 첫 번째와 같은 부호를 가진 것을 선택하는 것처럼 보입니다. 피연산자). –

+5

@alexandre 왜 그렇게 OP에 unpolite. 분명히 그는 사실을 알지 못했습니다. 그래서 그는 물었습니다. – reporter

+1

@AlexandreC. 음, 자바는 나에게 -1이라고 말해 준다. -7/3 = -2로 -1 나머지. -2 * 3 = -6 - 1 = -7 – noircc

답변

8

구체적 3.

의 배수 일 경우에 사용되는 계수의 구현이기 때문에 -7 마이너스 2 양성 계수를 선택하십시오. 일부 구현에서는 첫 번째 피연산자와 동일한 부호를 가진 계수를 선택하고 나머지는 항상 양수를 선택합니다.

+1

Ruby에서'remainder()'를 사용하여 Java에서와 같은 결과를 얻을 수 있습니다. 다양한 언어로 된 구현 선택 목록이있는 표는 http://en.wikipedia.org/wiki/Modulo_operation을 참조하십시오. –

+0

thx modulo에 대한 나의 이해는 -7/3 = -2 나머지 -1이였습니다. => -2 * 3 = -6 + -1 = -7 – noircc

1

{0, 1, 2}이 시계 방향으로 움직이는 숫자 휠을 상상해보십시오.

-7이 있기 때문에 0에서 시작하여 시계 반대 방향으로 7 곳을 이동합니다 (+5 mod 3이있는 경우 5은 시계 방향으로 이동합니다).

자, 즉 우리를 데려 않는 경우 보자 :

Current Number: 0 -1 -2 -3 -4 -5 -6 -7 
Wheel Number: 0 2 1 0 2 1 0 2 
1

국방부 함수는 첫 번째 매개 변수보다 큰 여러 적은 위의 나머지를 제공합니다. 이 7 개조 3이라면

후 6 정도로 1 그 다음, 10-7으로서 응답 (7-6)

-9보다는 큰 mulitiple 이하, 7보다 큰 여러 이하 -7이므로 2가 대답입니다 (-7- -9, -7 + 9)