> 백엔드 개발 > PHP 튜토리얼 > PHP에서 8%-3이 0인 이유 분석

PHP에서 8%-3이 0인 이유 분석

PHPz
풀어 주다: 2024-01-26 10:46:02
원래의
857명이 탐색했습니다.

PHP에서 8%-3이 0인 이유 분석

PHP에서 8%-3이 0인 이유를 알아보세요

대부분의 사람들은 PHP 언어로 수학 연산을 할 때 이상한 상황에 직면합니다. 그 중 하나는 8%(모듈로 3)를 계산하여 0이 되는 것입니다. 이 결과는 약간 이상해 보입니다. 이론적으로 8은 3으로 나눌 수 없으므로 나머지가 있어야 하기 때문입니다.

더 자세히 알아보기 전에 먼저 PHP의 모듈로 연산자 "%"를 살펴보겠습니다. 모듈로 연산은 두 숫자 사이의 나머지를 계산하는 데 사용됩니다. 구체적인 연산은 첫 번째 숫자를 두 번째 숫자로 나눈 다음 나머지를 결과로 취하는 것입니다.

PHP에서 모듈러스 연산 규칙의 중요한 원칙은 모듈러스 결과의 부호가 모듈러스의 부호와 일치한다는 것입니다. 따라서 모듈러스가 양수이면 모듈러스 결과도 양수입니다. 마찬가지로, 모듈러스가 음수이면 모듈러스 결과도 음수가 됩니다.

예제로 돌아가면 8%-3은 0이 아닌 음수 나머지를 반환해야 합니다. 그런데 왜 PHP는 0을 반환합니까?

이 질문에 대한 대답은 실제로 컴퓨터 과학의 수학적 및 프로그래밍 개념과 관련이 있습니다.

먼저, PHP에서 정수가 어떻게 표현되는지 이해해야 합니다. PHP에서 정수는 부호 있는 정수(부호 있는 정수)와 부호 없는 정수(부호 없는 정수)의 두 가지 유형으로 나눌 수 있습니다. 부호 있는 정수는 양수와 음수로 표현할 수 있는 정수이고, 부호 없는 정수는 음이 아닌 정수만 나타낼 수 있습니다.

기본적으로 PHP의 정수는 부호 있는 정수입니다. 즉, 8과 -3은 모두 부호 있는 정수입니다. 8%-3을 계산할 때 PHP는 두 숫자를 동일한 유형으로 변환한 다음 계산을 수행합니다.

이 경우 8은 부호 있는 정수로 변환되며 이진수 표현은 00000000000000000000000000001000입니다. 그리고 -3도 부호 있는 정수로 변환되며 이진수 표현은 111111111111111111111111111101입니다.

다음으로 PHP는 이 두 숫자에 대해 모듈로 연산을 수행합니다. 실제로 PHP는 정수 모듈로를 계산하기 위해 다음 공식을 사용합니다:

a % b = a - b * Floor(a / b)

이 공식에 따라 8%-3의 결과를 계산해 보겠습니다.

8 - (-3) Floor(8 / -3) = 8 - (-3) -2 = 8 - 6 = 2

이 계산에 따르면 우리가 얻는 결과는 정수 모듈러스 연산이 아닌 2입니다. 기본 결과는 0입니다. 왜 이런거야?

이유는 PHP의 정수 모듈로 연산자 "%"가 수학적 정의를 완전히 따르지 않기 때문입니다. 전통적인 수학적 정의에 따르면 모듈러스 연산의 결과는 0과 모듈러스 사이에 있어야 합니다. PHP에서 모듈러스가 음수인 경우 모듈러스 연산의 결과는 모듈러스의 절대값을 뺀 음수 나머지입니다.

따라서 이 예에서 8이 모듈러스로 사용되면 2가 합법적인 모듈로 결과입니다. 하지만 모듈러스가 음수인 상황에 초점을 맞추고 있으므로 최종 결과는 0입니다.

요약하자면, PHP에서 8%-3이 0인 이유는 PHP의 모듈로 연산자 "%" 설계가 전통적인 수학적 정의를 완전히 따르지 않고, 부호에 따라 결과를 조정하기 때문입니다. 계수.

이 결과가 조금 이상해 보이지만 실제 프로그래밍에서는 이 규칙에 따라 수학 연산을 연산하고 처리하여 예상치 못한 결과가 발생하지 않도록 할 수 있습니다.

요약

이 문서에서는 PHP에서 8%-3이 0과 같은 이유를 살펴봅니다. PHP에서 정수의 부호 있는 표현과 부호 없는 표현을 분석하고 정수 모듈로 연산의 정의를 분석함으로써 우리는 PHP의 모듈로 연산자 "%"가 전통적인 수학적 정의를 완전히 따르지 않는다는 것을 알게 되었습니다. 실제 프로그래밍에서는 이 규칙을 이해하고 수학적 연산을 적절하게 처리하여 예상한 결과를 얻어야 한다는 점은 주목할 가치가 있습니다.

위 내용은 PHP에서 8%-3이 0인 이유 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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