“mod”와“remainder”의 차이점은 무엇입니까?
제 친구는 "mod"와 "remainder"사이에 차이점이 있다고 말했습니다.
그렇다면 C와 C ++의 차이점은 무엇입니까? '%'는 C에서 "mod"또는 "rem"을 의미합니까?
모듈러스와 나머지는 차이가 있습니다. 예를 들면 다음과 같습니다.
-21
모드가 4
있습니다 3
때문 -21 + 4 x 6
입니다 3
.
그러나 -21
로 나누어 4
제공 -5
의 나머지 -1
.
양수 값의 경우 차이가 없습니다.
'%'는 C에서 "mod"또는 "rem"을 의미합니까?
C %
에서 나머지는 1 입니다.
...,
/
연산자 의 결과는 분수 부분을 버린 대수 몫입니다 ... (종종 "제로쪽으로 절단"이라고합니다.) C11dr §6.5.5 6
%
연산자 의 피연산자 는 정수 유형이어야합니다. C11dr §6.5.5 2
/
연산자 의 결과는 첫 번째 피연산자를 두 번째 피연산자로 나눈 몫입니다.%
운영자 의 결과는 나머지입니다 ... C11dr §6.5.5 5
“mod”와“remainder”의 차이점은 무엇입니까?
C는 유클리드 디비전 또는 다른 모듈로 에서 사용되는 정수 모듈러스 함수와 같은 "mod"를 정의하지 않습니다 . "유클리드 모드" 는 음 의 a%b
경우 C의 작동 과 다릅니다 a
.
// a % b
7 % 3 --> 1
7 % -3 --> 1
-7 % 3 --> -1
-7 % -3 --> -1
유클리드 사업부로서의 모듈로
7 modulo 3 --> 1
7 modulo -3 --> 1
-7 modulo 3 --> 2
-7 modulo -3 --> 2
후보 모듈로 코드 :
int modulo_Euclidean(int a, int b) {
int m = a % b;
if (m < 0) {
// m += (b < 0) ? -b : b; // avoid this form: it is UB when b == INT_MIN
m = (b < 0) ? m - b : m + b;
}
return m;
}
부동 소수점에 대한 참고 사항 : double fmod(double x, double y)
"fmod"라고하더라도 유클리드 디비전 "mod"와 동일하지 않지만 C 정수 나머지와 유사합니다.
이
fmod
함수는의 부동 소수점 나머지를 계산합니다x/y
. C11dr §7.12.10.1 2
fmod( 7, 3) --> 1.0
fmod( 7, -3) --> 1.0
fmod(-7, 3) --> -1.0
fmod(-7, -3) --> -1.0
명확성 : C double modf(double value, double *iptr)
에는 인수 이름 을 정수 및 소수 부분으로 나누는 비슷한 명명 된 함수 가 있습니다. 각 함수는 인수와 동일한 유형과 부호를 갖습니다. 이것은 이름 유사성을 제외하고 여기서 "mod"토론과는 거의 관련이 없습니다.
1 C99 이전에 C의 정의 %
는 여전히 나눗셈 의 나머지 부분 이었지만 , /
"0으로 자르기"보다는 음의 몫이 반올림되도록 허용했습니다. C89에서 정수 나누기에 대해 다른 값을 얻는 이유는 무엇입니까?를 참조하십시오 . . 따라서 일부 C99 이전 컴파일에서는 %
코드가 유클리드 부서 "mod"처럼 작동 할 수 있습니다. 위의 내용 modulo_Euclidean()
은이 오래된 학교 잔재에도 적용됩니다.
모듈러스 산술의 모듈러스는 산술 분할 후 남은 값 또는 남은 값입니다. 이것을 일반적으로 나머지라고합니다. %는 공식적으로 C / C ++의 나머지 연산자입니다. 예:
7 % 3 = 1 // dividend % divisor = remainder
토론을 위해 남겨진 것은이 % 연산에 부정적인 입력을 처리하는 방법입니다. 최신 C 및 C ++는이 연산에 대해 부호 있는 나머지 값을 생성합니다. 여기서 결과 의 부호는 제수 입력 부호와 상관없이 항상 배당 입력 값과 일치합니다 .
C 및 C ++ 및 많은 언어 %
에서 나머지는 모듈러스 연산자가 아닙니다.
예를 들어 연산 -21 / 4
에서 정수 부분은 -5
이고 소수 부분은 -.25
입니다. 나머지는 제수의 일부인 분수이므로 나머지는 -1
입니다. JavaScript는 나머지 연산자를 사용하여이를 확인합니다.
console.log(-21 % 4 == -1);
The modulus operator is like you had a "clock". Imagine a circle with the values 0, 1, 2, and 3 at the 12 o'clock, 3 o'clock, 6 o'clock, and 9 o'clock positions respectively. Stepping quotient times around the clock clock-wise lands us on the result of our modulus operation, or, in our example with a negative quotient, counter-clockwise, yielding 3.
Note: Modulus is always the same sign as the divisor and remainder the same sign as the quotient. Adding the divisor and the remainder when the remainder at least one is negative yields the modulus.
In mathematics the result of the modulo operation is the remainder of the Euclidean division. However, other conventions are possible. Computers and calculators have various ways of storing and representing numbers; thus their definition of the modulo operation depends on the programming language and/or the underlying hardware.
7 modulo 3 --> 1
7 modulo -3 --> -2
-7 modulo 3 --> 2
-7 modulo -3 --> -1
참고URL : https://stackoverflow.com/questions/13683563/whats-the-difference-between-mod-and-remainder
'Programing' 카테고리의 다른 글
Angular2에서 괄호, 괄호 및 별표의 차이점은 무엇입니까? (0) | 2020.07.24 |
---|---|
(NOLOCK) 대 SET TRANSACTION ISOLATION LEVEL READ 미 확약 (0) | 2020.07.24 |
Nexus와 Maven의 차이점은 무엇입니까? (0) | 2020.07.24 |
Java SecurityException : 서명자 정보가 일치하지 않습니다 (0) | 2020.07.23 |
Visual Studio Editor는 더 이상 오류를 강조하지 않습니다. (0) | 2020.07.23 |