다른 사람이 왜 아래 코드에서 두 비트 연산에 대한 출력이 다른지 설명 할 수 있습니까?
http://php.net/manual/en/language.operators.bitwise.php에서 PHP 문서에 따르면, $ 값은 정수로 캐스트해야합니다비트 연산자에 대한 형변환
피연산자와 결과는 모두를위한 < < 및 >> 사업자는 항상 정수로 처리됩니다.
내 코드 : 부호없는 정수는 지원되지 않기 때문에
이$value = 4294967295;
echo 'value is float: ' . (($value >> 32 - 1) & 1); //OUTPUT: value is string: 1
$value = '4294967295';
echo 'value is string: ' . (($value >> 32 - 1) & 1); //OUTPUT: value is string: 0
두 번째 동작 타입 캐스팅이 작동하지 않고 작업이 문자의 ASCII 값을 수행? 그렇다면 왜 float 값과 함께 작동합니까?
내 코드는 float 값과 잘 작동하므로 실제 문제는 없지만 무슨 일이 일어나는지 알고 싶습니다. 내 코드가 예상대로 작동하지 않는 곳을 알아내는 데는 시간이 걸렸습니다.
필자는 Windows 7 x64 (테스트 용)에서 5.4.19 버전의 PHP를 사용합니다.
PHP 5.5.11 (cli) (빌드 : May 2014 18:13:30) OSX는 두 경우 모두'1 '을 제공합니다. – mleko
PHP의 어떤 버전에서도 재현 할 수 없습니다 : http://3v4l.org/IQ1CG – deceze
@deceze http://3v4l.org에서 할 수 없지만 http://ideone.com/, http://codepad.org/ 및 다른 사람들은 내 로컬 컴퓨터에있는 것과 동일한 출력을 생성합니다. –