Programing

Java에서 mod의 구문

c10106 2022. 4. 20. 21:31
반응형

Java에서 mod의 구문

유사 부드의 예로서:

if ((a mod 2) == 0)
{
    isEven = true;
}
else
{
    isEven = false;
}

의미가 약간 다른 modulo 연산자 대신 음이 아닌 정수의 경우 나머지 연산자를 사용할 수 있다.% 다음과 같다 정확한 예:

if ((a % 2) == 0)
{
    isEven = true;
}
else
{
    isEven = false;
}

이는 단일 라이너로 단순화할 수 있다.

isEven = (a % 2) == 0;

다음은 최소 Java 코드로 의사 코드를 표현한 것이다.

boolean isEven = a % 2 == 0;

나는 이제 그것을 그것의 구성요소로 분해할 것이다.자바에서 계량 연산자는 백분율 문자(%)이다.따라서 int % int를 복용하면 다른 int를 반환한다.이중 등가 연산자는 int 쌍과 같은 값을 비교하고 부울을 반환하는 데 사용된다.그런 다음 부울 변수 'isEven'에 할당된다.연산자 우선 순위에 기초하여 계수를 비교하기 전에 평가한다.

다른 사람들은 이미 답을 주었으므로, 약간의 문맥을 추가하겠다. % "계량" 운영자는 실제로 나머지 작업을 수행하고 있다.모드와 렘의 차이는 미묘하지만 중요하다.

(-1모드 2)는 일반적으로 1을 준다.보다 구체적으로 X와 Y라는 두 정수를 부여한 연산(X mod Y)은 [0, Y] 범위의 값을 반환하는 경향이 있다.다르게 말하면 X와 Y의 계수는 항상 0보다 크거나 같고 Y보다 작다.

% 또는 rem 연산자로 동일한 연산을 수행하면 X 값의 기호가 유지된다.X가 음수이면 (-Y, 0)의 범위에서 결과가 나온다.X가 양수일 경우 [0, Y] 범위에서 결과를 얻는다.

종종 이런 미묘한 구별은 중요하지 않다.그러나 코드 질문으로 돌아가면 "동일성"을 위한 여러 가지 해결 방법이 있다.

첫 번째 접근법은 초심자에게 좋다. 왜냐하면 그것은 특히 장황하기 때문이다.

// Option 1: Clearest way for beginners
boolean isEven;
if ((a % 2) == 0)
{
  isEven = true
}
else
{
  isEven = false
}

두 번째 접근법은 언어를 더 잘 활용하며, 더 간결한 코드로 이어진다. (== 오퍼레이터가 부울을 반환한다는 것을 잊지 말 것)

// Option 2: Clear, succinct, code
boolean isEven = ((a % 2) == 0);

세 번째 접근법은 완전성을 위해 여기에 있으며, 3차 연산자를 사용한다.비록 제3의 연산자가 종종 매우 유용하지만, 이 경우 나는 제2의 접근법을 우월하다고 생각한다.

// Option 3: Ternary operator
boolean isEven = ((a % 2) == 0) ? true : false;

네 번째와 마지막 접근법은 정수의 이진 표현에 대한 지식을 사용하는 것이다.최하위 비트가 0이면 숫자는 짝수다.이것은 비트 앤 오퍼레이터 (&)를 사용하여 확인할 수 있다.이러한 접근 방식이 가장 빠르지만(분할 대신 간단한 비트 마스킹을 하고 있다), 초보자에게는 아마도 조금 진보된/공만된 것 같다.

// Option 4: Bitwise-and
boolean isEven = ((a & 1) == 0);

여기서 비트 앤 오퍼레이터를 사용하여 옵션 2에 표시된 간결한 형태로 표현했다.옵션 1의 양식(그리고 대안 옵션 3)에 그것을 다시 쓰는 것은 독자들에게 연습으로 남겨진다.;)

그게 도움이 되길 바래.

Java의 %(REM) 작업이 음수 X 및 양의 Y 값에 대한 MOD와 같이 작동하도록 하려면 다음 방법을 사용하십시오.

private int mod(int x, int y)
{
    int result = x % y;
    if (result < 0)
    {
        result += y;
    }
    return result;
}

또는 3차 연산자와 함께(일부 상황에서는 가능하지 않거나 효율적이지 않음):

private int mod(int x, int y)
{
    int result = x % y;
    return result < 0? result + y : result;
}

자바에는 실제로 C처럼 모듈로 연산자가 없다. 자바에서 %는 나머지 연산자다.양의 정수에서는 모듈로와 똑같이 동작하지만 음의 정수에서는 다르게 동작하며, 모듈로와 달리 부동 소수점 번호로도 동작할 수 있다.하지만, 긍정적인 정수 이외의 어떤 것에 %를 사용하는 경우는 드물기 때문에, 그것을 모듈로 부르고 싶다면, 자유롭게 하라!

값이 음수인지 확인하여 적절한 모듈로를 할 수 있고, 음수인지(다수가 제시한 방식)를 정정할 수 있지만, 보다 콤팩트한 해결책이 있다.

(a % b + b) % b

이렇게 하면 먼저 modulo를 수행하여 값을 -b -> +b 범위로 제한한 후 값이 양수인지 확인하기 위해 b를 더하여 다음 modulo가 0 -> b 범위로 제한하도록 한다.

참고: b가 음수일 경우 결과도 음수일 것이다.

이 코드는 modulo를 사용하지 않고 훨씬 빠르게 실행된다.

public boolean isEven(int a){
    return ( (a & 1) == 0 );
}

public boolean isOdd(int a){
    return ( (a & 1) == 1 );
}

Java에서 그것은 이다.%운영자: 15.17.3. 나머지 운영자 %

또한 다음에도 있다는 점에 유의하십시오.java.lang.Math은 ㄴ다다다이다.%다른 기호를 가진 논쟁의 경우:

public static int floorMod​(int x, int y)

남들이 지적한 바와 같이, The는% (iiii) 연산자(수子) 수자(수子) 수자(수子)와 같지 .mod계량 작동/기능

mod%

x mod n 맵 함수수수수맵x로.n의 범위 내에서[0,n).
에 려면에x % n연산자 지도x로.n의 범위 내에서(-n,n).

수학적 계량연산을 사용하는 방법을 가지고 앞에 있는 기호를 신경쓰지 않기 위해서입니다.x사용할 수 있는 항목:

((x % n) + n) % n

아마도 이 사진은 더 잘 이해하는데 도움이 될 것이다(이 사진부터 머리를 감싸느라 힘들었다)

여기에 이미지 설명을 입력하십시오.

if (a % 2 == 0) {
} else {
}

% 연산자를 사용하기 전에 사양을 검토하십시오.

http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.17.3

// bad enough implementation of isEven method, for fun. so any worse?
boolean isEven(int num)
{
    num %= 10;
    if(num == 1)
       return false;
    else if(num == 0)
       return true;
    else
       return isEven(num + 2);
}
isEven = isEven(a);

또한 다음과 같이 mod를 사용할 수 있다.

int a = 7;
b = a % 2;

b1과 같을 것이다.왜냐하면7 % 2 = 1.

Java의 나머지 연산자는%modulo 연산자는 다음과 같이 표현할 수 있다.

public int mod(int i, int j)
{
  int rem = i % j;
  if (j < 0 && rem > 0)
  {
    return rem + j;
  }
  if (j > 0 && rem < 0)
  {
    return rem + j;
  }
  return rem;
}

또 다른 방법은 다음과 같다.

boolean isEven = false;
if((a % 2) == 0)
{
    isEven = true;
}

그러나 가장 쉬운 방법은 다음과 같다.

boolean isEven = (a % 2) == 0;

@Steve Kuo가 말한 것처럼.

Java, mod 연산은 다음과 같이 수행될 수 있다.

Math.floorMod(a, b)

참고: mod 조작은 나머지 조작과는 다르다.Java, 나머지 연산은 다음과 같이 수행할 수 있다.

a % b

modulo 연산자는 %(백분 기호)이다.균일성을 검정하거나 일반적으로 2의 검정력에 대해 modulo를 실행하려면 isEven = !(a & 1 )와 같이 &(the and operator)를 사용할 수도 있다.

@Cody의 코드에 대한 대안:

계량 연산자 사용:

bool isEven = (a % 2) == 0;

나는 이것이 if/else보다 약간 더 나은 코드라고 생각한다. 왜냐하면 중복과 사용되지 않는 유연성이 적기 때문이다.검사하려면 두뇌 파워가 좀 더 필요하지만, 좋은 이름이란 것은isEven보상하다

참조URL: https://stackoverflow.com/questions/90238/whats-the-syntax-for-mod-in-java

반응형