编程语言
首页 > 编程语言> > javascript和php之间按位运算结果的差异

javascript和php之间按位运算结果的差异

作者:互联网

JavaScript代码:

console.log( 1 << 5 );
console.log( 1111044149 << 2 );

JavaScript输出:

32
149209300

PHP代码:

var_dump( 1 << 5 );
var_dump( 1111044149 << 2 );

PHP输出:

32
4444176596

为什么1111044149<< 2 PHP和javascript有区别吗?我正在用PHP编写javascript代码,而该部分的所有工作都少了,我需要PHP代码显示出在javascript中获得的相似结果是完美的.

解决方法:

JavaScript中按位运算的操作数始终被视为int32,而在PHP中并非如此.因此,在1111044149上执行左移时,这会在JS中发生:

01000010001110010011000000110101 (original, 32-bit)

00001000111001001100000011010100 (left shifted 2 positions, "01" is truncated)
= 149209300

在PHP中,这些位不会被截断,因为它不会被视为32位整数.

标签:javascript,php,bitwise-operators
来源: https://codeday.me/bug/20191013/1906903.html