현재 Java에서 % 연산자로 작업하고 있습니다. 나는 그것을 이해할 줄 알았지 만이 질문을 건너오고 나면 지금 혼란 스럽다. 그래서 나는 10 % 3 = 나머지 1을 알고 있습니다. 제 질문은 왜 3 % 8 = 나머지 3입니까? 저는 3이 8 제로가되기 때문에 이것이 0과 같을 것이라고 생각했습니다. 또 다른 예는 2 % 8 = 나머지 2 일 것입니다. 왜이 나머지가 제로가되지 않을까요? 누군가 이것이 왜 이것이 끔찍한지를 설명 할 수 있다면! 고맙습니다! 당신은 당신이 기대하는대로 음수를 취급에서 다음 Math.floorMod
를 사용, 모듈로 연산자를 찾고 있다면나머지 연산자를 사용하는 방법
-3
A
답변
0
이는 수학적으로 정확한 동작입니다.
사람들이 내게 어림짐작을 덜어 주길 바라지 만, 정수 mod n은 모두 0에서 n - 1
사이의 정수입니다. 그들은 번호 이론과 암호학에 중요한 multiplicative group을 형성합니다. 또 다시, 단지 같은 그룹 - 사실, 당신이
for (int i = 0; i < x; i++) {
Console.WriteLine(i % n);
}
을한다면 이것은 당신에게 0 (1 N)에 모든 숫자를 줄 것이다.
세부 사항은 알 수 없지만 mathematical group은 "일반적인"산술로 예상했던 것과 다소 비슷하게 동작하는 연산 집합입니다. 예를 들어, 집합이 곱셈 아래에 그룹을 형성하면 곱셈은 해당 집합에 대해 "작동"한다는 의미입니다.
n
이 소수 (예 : 32)의 제곱 인 경우 정수 mod n은 finite field을 형성합니다. 즉, 일반 산술과 매우 유사하게 동작합니다.
TL; DR | 피드백 보내기 현재 상태 현재 상태 이것은 의도적으로 설계된 동작입니다. 실제로 수학적으로 완벽하게 정확합니다.
0
나머지 연산자는 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html
에서 자바 튜토리얼에 설명되어 있습니다. 설명서는 %
과 floorMod
의 차이점에 대한 예제를 제공합니다. http://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#floorMod-int-int-
관련 문제
- 1. Rx.Observable.prototype.let 연산자를 사용하는 방법?
- 2. 함수 정의에 나머지 연산자와 스프레드 연산자를 함께 사용하는 방법은 무엇입니까?
- 3. LINQ에서 IN 연산자를 사용하는 방법
- 4. 면도기보기에서 삼항 연산자를 사용하는 방법?
- 5. VBA에서 텍스트 연산자를 사용하는 방법?
- 6. 문에서 AND 연산자를 사용하는 방법
- 7. 이 간단한 연산자를 사용하는 방법?
- 8. sqlAlchemy에서 "Like"연산자를 사용하는 방법
- 9. Cakephp에서 IN 연산자를 사용하는 방법
- 10. oracle에서 union 연산자를 사용하는 방법
- 11. 여기서 나머지/모듈러스 연산자를 어떻게 적용합니까?
- 12. Twitter 나머지 API를 사용하는 방법
- 13. extjs4.1에서 나머지 webservice를 사용하는 방법
- 14. C에서 나머지 API를 사용하는 방법
- 15. 모듈러스 연산자를 사용하지 않고 나머지 계산 F #
- 16. 클래스의 정적 변수에 감소 연산자를 사용하는 방법
- 17. 루아에서 C 코드로 ... 연산자를 사용하는 방법
- 18. Objective-C에서 매크로에서 Ternary 연산자를 사용하는 방법?
- 19. MySQl 하나의 열에 복수 연산자를 사용하는 방법
- 20. Ansible - 또는 연산자를 사용할 때 사용하는 방법
- 21. TypeScript 앱에서 rxjs 연산자를 사용하는 방법
- 22. System.Type 변수에서 "is"연산자를 사용하는 방법?
- 23. 부스트 람다에서 첨자 연산자를 사용하는 방법
- 24. 안드로이드 데이터베이스에서 AND 연산자를 사용하는 방법
- 25. 람다 식에서 같은 연산자를 사용하는 방법
- 26. lin 연산자에서 IN 연산자를 사용하는 방법
- 27. R에서 % <> % 연산자를 사용하는 방법
- 28. C++ Builder에서 Delphi "in"연산자를 사용하는 방법
- 29. Flink CEP에서 "every"패턴 연산자를 사용하는 방법
- 30. Jenkins 목표에서 OR 연산자를 사용하는 방법
다른 방법으로 '8'은 '3'으로 끝나고 나머지는 '3'이됩니다. '%'는'/'(또는 division)을 보완합니다. '2/8'은 '0'이므로 나머지는 원래 값 (또는 '2')입니다. 나머지가 '0'인 경우, 숫자는 '8'로 나눌 수 있어야합니다. 그래서, 8, 16, 24, 32, 40 등 –
_3 0으로 8 번갑니다. 사실이 아닙니다. 3은 8 번으로 두 번갑니다. 그것에 대해 당신의 생각은 거꾸로. 8은 3 번 0 번에 들어가고 3 번 남은 부분은 여전히 있습니다. – JackVanier
이것은 모듈러스 연산자가 아닙니다. 그것은 * 나머지 연산자입니다. – EJP