2011-03-24 10 views
1

는 다음과 같은 코드를 가지고 :왜 자바 스크립트와 PHP에서 '<<'연산자가 다르게 동작합니까?

<script> 
var x = 25; 
document.write(x << 9); 
</script> 

<?php 
$x = 25; 
echo ($x << 9); 
?> 

이 출력 : 12800 12800
확인을.

<script> 
var x = 12345678; 
document.write(x << 9); 
</script> 

<?php 
$x = 12345678; 
echo ($x << 9); 
?> 

출력이 2026019840 6320987136

입니다 이번에는 왜 후자의 두 값이 다른 : 일반 지금까지 ... 지금이 시도 할 수 있습니다? 그리고 가장 중요한 것은 (저에게), PHP 구현에서 Javascript 구현이하는 일을 어떻게 할 수 있습니까? 즉, 내 PHP 코드 대신에 2022019840을 출력하고 싶습니다. 6320987136

+3

자바 스크립트 대신 낮은 32 비트를 제공합니다. –

+0

훌륭합니다! 그래서 만약 내가 0xFFFFFFFF의 값을 원한다면 나는 PHP에서 원하는 값을 얻는다. 받아 들일 수 있도록 대답으로 제출해 주시겠습니까? – Mala

답변

3

(x << 9) % 0x100000000 또는 그와 동등한 PHP를 사용하고 싶습니다. (또는 방금 말한 내용)

1

PHP는 64 비트 결과를 제공합니다. Javascript는 낮은 32 비트를 제공합니다. PHP에서 (x << 9) & 0xFFFFFFFF을 사용하면 낮은 32 비트를 얻을 수 있습니다.

부호 비트에 문제가 발생할 수 있습니다. 파이썬이 그렇듯이 PHP가 자동으로 긴 것으로 변환되기 때문에 그들은 다르다. (23456789 << 9)

관련 문제