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