php按位与计算结果要错位吗,javascript和php之间按位运算结果的差异

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值