> 백엔드 개발 > C++ > C/C /Obj-C의 모듈로 연산에서 음수를 처리하는 방법은 무엇입니까?

C/C /Obj-C의 모듈로 연산에서 음수를 처리하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-02 23:10:29
원래의
836명이 탐색했습니다.

How to Handle Negative Numbers in Modulo Operations in C/C  /Obj-C?

C/C /Obj-C의 모듈로 계산에서 음수 처리

C 기반 언어에서 "% " 연산자는 음수를 처리할 때 예상치 못한 동작을 보일 수 있습니다. 구체적으로는 수학적 모듈로 연산의 결과와 결과가 다를 수 있습니다.

문제 설명

수학적 개념으로 모듈로 나눗셈은 하나의 숫자를 다음으로 나눈 나머지를 반환합니다. 또 다른. 그러나 C/C /Obj-C에서 모듈로 연산자는 양수 나머지를 보장하는 것보다 피제수(첫 번째 피연산자)의 부호를 보존하는 데 우선순위를 둡니다. 이는 수학적 나눗셈으로 인해 양의 나머지가 나오는 경우에도 음의 결과로 이어질 수 있습니다.

예를 들어 "(-1) % 8"이라는 표현식을 고려해 보세요. 수학적으로 8은 -1에 한 번 들어가고 나머지는 7이므로 7을 반환해야 합니다. 그러나 C/C에서는 피제수의 부호를 유지하므로 결과는 -1이 됩니다.

구현 고려 사항이 포함된 솔루션

이 상황을 해결하려면 음수를 설명하기 위해 모듈로 연산자의 수정된 버전을 구현할 수 있습니다.

<code class="c++">int customMod(int a, int b) {
  if (b < 0) {
    return -customMod(-a, -b);
  }

  int ret = a % b;
  if (ret < 0) {
    ret += b;
  }

  return ret;
}</code>
로그인 후 복사

이 최적화된 버전에서는 피연산자의 수가 음수인 경우 두 피연산자의 부호를 반대로 바꾸고 사용자 정의 모듈로 연산자를 재귀적으로 호출합니다. 나머지를 계산한 후 음수인지 확인하고 제수를 더하여 양수로 만듭니다. 이렇게 하면 최종 결과가 올바른 수학적 나머지를 유지하도록 보장됩니다. 예를 들어, customMod(-1, 8)은 7을 반환하고 customMod(13, -8)는 -3을 반환합니다.

전체적으로 수정된 이 모듈로 연산자는 음수를 효과적으로 처리하고 수학적 규칙에 맞는 결과를 생성합니다. 모듈로 기대.

위 내용은 C/C /Obj-C의 모듈로 연산에서 음수를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿