답변:
모듈로 나눗셈 의 결과 는 주어진 숫자 의 정수 나눗셈 의 나머지입니다 .
그것의 의미는:
27 / 16 = 1, remainder 11
=> 27 mod 16 = 11
다른 예 :
30 / 3 = 10, remainder 0
=> 30 mod 3 = 0
35 / 3 = 11, remainder 2
=> 35 mod 3 = 2
대부분의 설명은 한 가지 중요한 단계를 놓치고 있습니다. 다른 예를 사용하여 공백을 메우겠습니다.
다음을 고려하면 :
Dividend: 16
Divisor: 6
계수 기능은 다음과 같습니다 :
16 % 6 = 4
이것이 왜 그런지 결정합시다.
먼저 정수 나누기를 수행 합니다 . 이는 분수 (일명 나머지)가 삭제된다는 점을 제외하면 일반 나눗셈과 유사합니다.
16 / 6 = 2
그런 다음 위의 나눗셈 ( ) 의 결과에 제수 ( )를 곱 합니다 .2
6
2 * 6 = 12
마지막으로 배당금 ( ) 에서 위의 곱셈 ( ) 의 결과를 뺍니다 .12
16
16 - 12 = 4
이 뺄셈의 결과는, 4
의 나머지는 , 우리 같은 결과 계수 위!
16 // 6 >>> 2
and16 / 6 >>> 2.6666666666666665
시계가있는 예제는 모듈로를 이해하는 데 도움이 될 수 있습니다.
모듈 식 산술의 익숙한 사용은 하루를 두 개의 12 시간 주기로 나누는 12 시간 시계에서 사용하는 것입니다.
현재 시간이 15:00 이라고 가정 해 보겠습니다.
하지만 오후 3 시라고 도 할 수 있습니다.
이것이 바로 모듈로가하는 일입니다 :
15 / 12 = 1, remainder 3
이 예제는 wikipedia에서 더 잘 설명되어 있습니다. Wikipedia Modulo Article
계수를 계산하는 간단한 공식은 다음과 같습니다.
[Dividend-{(Dividend/Divisor)*Divisor}]
그래서, 27 % 16 :-
27- {(27/16) * 16}
27- {1 * 16}
답 = 11
참고 :
모든 계산은 정수로 이루어집니다. 소수 몫의 경우 소수 뒤의 부분은 무시 / 잘립니다.
예 : 27 / 16 = 1.6875는 위에서 언급 한 공식에서 단지 1로 간주됩니다. 0.6875는 무시됩니다.
컴퓨터 언어의 컴파일러는 소수 부분이있는 정수도 동일한 방식으로 처리합니다 (소수점 뒤에서 잘림).
모듈러스 연산자는 나누기 문을 가져 와서 해당 계산에서 남은 모든 데이터, 말하자면 13/5 = 2를 반환합니다. 즉, 해당 계산에서 3 개가 남았거나 남아 있습니다. 왜? 2 * 5 = 10이기 때문입니다. 따라서 13-10 = 3입니다.
모듈러스 연산자는 모든 계산을 수행합니다 (13 % 5 = 3).
이 간단한 단계가 도움이되기를 바랍니다.
20 % 3 = 2
20 / 3 = 6
; 포함하지 말고 .6667
무시하십시오.3 * 6 = 18
20 - 18 = 2
, 나머지는 모듈로계수 분할은 매우 간단합니다. 몫 대신 나머지를 사용합니다.
1.0833... <-- Quotient
__
12|13
12
1 <-- Remainder
1.00 <-- Remainder can be used to find decimal values
.96
.040
.036
.0040 <-- remainder of 4 starts repeating here, so the quotient is 1.083333...
13/12 = 1R1, 에르고 13 % 12 = 1.
계수를 "주기"로 생각하면 도움이됩니다.
즉, 표현식 n % 12
의 경우 결과는 항상 <12입니다.
즉 세트의 서열을 의미 0..100
위한 n % 12
것이다 :
{0,1,2,3,4,5,6,7,8,9,10,11,0,1,2,3,4,5,6,7,8,9,10,11,0,[...],4}
그 관점에서 모듈러스와 그 용도가 훨씬 더 명확 해집니다.
이해해야 할 유일한 중요한 것은 모듈러스 (여기서는 C에서와 같이 %로 표시됨)가 유클리드 나눗셈을 통해 정의 된다는 것 입니다.
두 (d, q)
정수의 경우 다음은 항상 참입니다 .
d = ( d / q ) * q + ( d % q )
보시다시피의 값은의 값에 d%q
따라 다릅니다 d/q
. 일반적으로 양의 정수 d/q
는 0쪽으로 잘립니다. 예를 들어 5/2는 2를 제공하므로 다음과 같습니다.
5 = (5/2)*2 + (5%2) => 5 = 2*2 + (5%2) => 5%2 = 1
그러나 음의 정수의 경우 상황이 덜 명확하고 언어 및 / 또는 표준에 따라 다릅니다. 예를 들어 -5/2는 -2 (이전과 같이 0으로 잘림)를 반환 할 수 있지만 -3 (다른 언어 사용)도 반환 할 수 있습니다.
첫 번째 경우 :
-5 = (-5/2)*2 + (-5%2) => -5 = -2*2 + (-5%2) => -5%2 = -1
그러나 두 번째에서는 :
-5 = (-5/2)*2 + (-5%2) => -5 = -3*2 + (-5%2) => -5%2 = +1
이전에 말했듯 이, 유클리드 분할 인 불변을 기억하십시오 .
추가 세부 사항 :
0으로 시작하는 테이블을 작성하십시오.
{0,1,2,3,4}
행에서 표를 계속하십시오.
{0,1,2,3,4}
{5,6,7,8,9}
{10,11,12,13,14}
1 열의 모든 것은 5의 배수입니다. 2 열의 모든 것은 5의 배수이며 나머지는 1입니다. 이제 추상 부분 : (1)을 1/5 또는 10 진수 확장으로 쓸 수 있습니다. 모듈러스 연산자는 열만 반환하거나 다른 방식으로 긴 나눗셈의 나머지를 반환합니다. 당신은 modulo (5)를 다루고 있습니다. 다른 계수, 다른 테이블. 해시 테이블을 생각해보십시오.
두 개의 정수를 나누면 다음과 같은 방정식이 생깁니다.
A / B = Q 나머지 R
A는 배당금입니다. B는 제수입니다. Q는 몫이고 R은 나머지입니다.
때로는 A를 B로 나눌 때 나머지가 무엇인지에만 관심이 있습니다. 이러한 경우 모듈로 연산자 (mod로 약칭)라는 연산자가 있습니다.
예
16/5= 3 Remainder 1 i.e 16 Mod 5 is 1.
0/5= 0 Remainder 0 i.e 0 Mod 5 is 0.
-14/5= 3 Remainder 1 i.e. -14 Mod 5 is 1.
자세한 내용은 Khan Academy 기사 를 참조하세요.
컴퓨터 과학에서 Hash 테이블은 Mod 연산자를 사용하여 요소를 저장합니다. 여기서 A는 해싱 후 값, B는 테이블 크기, R은 요소가 삽입 된 슬롯 또는 키의 수입니다.
자세한 내용 은 해시 테이블 작동 방식 을 참조하세요.
이것은 모듈러스 연산자를 이해하는 데 가장 적합한 접근 방식이었습니다. 예를 들어 설명하겠습니다.
16 % 3
이 두 숫자를 나누면 나머지가 결과입니다. 이것이 내가하는 방법이다.
16 % 3 = 3 + 3 = 6; 6 + 3 = 9; 9 + 3 = 12; 12 + 3 = 15
따라서 16까지 남은 것은 1입니다.
16 % 3 = 1
여기에 또 하나의 예가 있습니다. 16 % 7 = 7 + 7 = 14
16까지 남은 것은 무엇입니까? 이다2
16 % 7 = 2
하나 더 : 24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24
. 나머지는 0입니다.24 % 6 = 0