Javascript code:
console.log( 1 << 5 );
console.log( 1111044149 << 2 );
Javascript output:
32
149209300
PHP code:
var_dump( 1 << 5 );
var_dump( 1111044149 << 2 );
PHP output:
32
4444176596
Why 1111044149 << 2
has difference between PHP and javascript? I'm writing a javascript code to PHP and everything worked less that part and I need the PHP code shows similar results obtained in javascript to be perfect.
The operands of a bitwise operation in JavaScript are always treated as int32, and in PHP this is not the case. So, when performing the left shift on
1111044149
, this happens in JS:And in PHP, the bits do not get truncated because it is not treated as a 32-bit integer.
Thanks for the explanations, helped me a lot and I could now make a function to handle this automatically conversion, I had forgotten that detail about 32-bit and 64-bit for lack of attention.
Function
Test
Output