3v4l.org

run code in 300+ PHP versions simultaneously
<?php $n = 2147483647; shift($n); echo "\n"; echo "\n"; echo "\n"; echo "\n"; $n = 2147483648; shift($n); function out($a, $b, $c, $b2 = '0', $c1 = ' ') { $padstra = 40; $padstrb = 23; echo str_pad($a, $padstra, ' ', STR_PAD_LEFT) . " " . str_pad(decbin($b), 32, $b2, STR_PAD_LEFT) . " " . str_pad($c, $padstrb, $c1) . "\n"; } function shift($n) { out($n , $n , '$n' ); echo "\n"; out('A:', $n >> 1 , '$n >> 1' ); out('B:', 0xFFFFFFFF , '0xFFFFFFFF' ); out('A & B:', ($n >> 1) & 0xFFFFFFFF , '($n >> 1) & 0xFFFFFFFF' ); echo "\n"; out('C:', $n , '$n' ); out('D:', 0x00000001 , '0x00000001' ); out('C & D:', $n & 0x00000001 , '$n & 0x00000001' ); echo "\n"; out('C & D:', $n & 0x00000001 , '$n & 0x00000001' ); out('(C & D) << 31:', ($n & 0x00000001) << 31 , '($n & 0x00000001) << 31' ); echo "\n"; out('A & B:', ($n >> 1) & 0xFFFFFFFF , '($n >> 1) & 0xFFFFFFFF' ); out('(C & D) << 31:', ($n & 0x00000001) << 31 , '($n & 0x00000001) << 31' ); out('(A & B) | ((C & D) << 31):', ($n >> 1) & 0xFFFFFFFF | ($n & 0x00000001) << 31 , '($n >> 1) & 0xFFFFFFFF | ($n & 0x00000001) << 31'); }
Output for 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
2147483647 01111111111111111111111111111111 $n A: 00111111111111111111111111111111 $n >> 1 B: 11111111111111111111111111111111 0xFFFFFFFF A & B: 00111111111111111111111111111111 ($n >> 1) & 0xFFFFFFFF C: 01111111111111111111111111111111 $n D: 00000000000000000000000000000001 0x00000001 C & D: 00000000000000000000000000000001 $n & 0x00000001 C & D: 00000000000000000000000000000001 $n & 0x00000001 (C & D) << 31: 10000000000000000000000000000000 ($n & 0x00000001) << 31 A & B: 00111111111111111111111111111111 ($n >> 1) & 0xFFFFFFFF (C & D) << 31: 10000000000000000000000000000000 ($n & 0x00000001) << 31 (A & B) | ((C & D) << 31): 10111111111111111111111111111111 ($n >> 1) & 0xFFFFFFFF | ($n & 0x00000001) << 31 2147483648 10000000000000000000000000000000 $n A: 01000000000000000000000000000000 $n >> 1 B: 11111111111111111111111111111111 0xFFFFFFFF A & B: 01000000000000000000000000000000 ($n >> 1) & 0xFFFFFFFF C: 10000000000000000000000000000000 $n D: 00000000000000000000000000000001 0x00000001 C & D: 00000000000000000000000000000000 $n & 0x00000001 C & D: 00000000000000000000000000000000 $n & 0x00000001 (C & D) << 31: 00000000000000000000000000000000 ($n & 0x00000001) << 31 A & B: 01000000000000000000000000000000 ($n >> 1) & 0xFFFFFFFF (C & D) << 31: 00000000000000000000000000000000 ($n & 0x00000001) << 31 (A & B) | ((C & D) << 31): 01000000000000000000000000000000 ($n >> 1) & 0xFFFFFFFF | ($n & 0x00000001) << 31
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 2147483647 01111111111111111111111111111111 $n A: 00111111111111111111111111111111 $n >> 1 B: 11111111111111111111111111111111 0xFFFFFFFF A & B: 00111111111111111111111111111111 ($n >> 1) & 0xFFFFFFFF C: 01111111111111111111111111111111 $n D: 00000000000000000000000000000001 0x00000001 C & D: 00000000000000000000000000000001 $n & 0x00000001 C & D: 00000000000000000000000000000001 $n & 0x00000001 (C & D) << 31: 10000000000000000000000000000000 ($n & 0x00000001) << 31 A & B: 00111111111111111111111111111111 ($n >> 1) & 0xFFFFFFFF (C & D) << 31: 10000000000000000000000000000000 ($n & 0x00000001) << 31 (A & B) | ((C & D) << 31): 10111111111111111111111111111111 ($n >> 1) & 0xFFFFFFFF | ($n & 0x00000001) << 31 2147483648 10000000000000000000000000000000 $n A: 01000000000000000000000000000000 $n >> 1 B: 11111111111111111111111111111111 0xFFFFFFFF A & B: 01000000000000000000000000000000 ($n >> 1) & 0xFFFFFFFF C: 10000000000000000000000000000000 $n D: 00000000000000000000000000000001 0x00000001 C & D: 00000000000000000000000000000000 $n & 0x00000001 C & D: 00000000000000000000000000000000 $n & 0x00000001 (C & D) << 31: 00000000000000000000000000000000 ($n & 0x00000001) << 31 A & B: 01000000000000000000000000000000 ($n >> 1) & 0xFFFFFFFF (C & D) << 31: 00000000000000000000000000000000 ($n & 0x00000001) << 31 (A & B) | ((C & D) << 31): 01000000000000000000000000000000 ($n >> 1) & 0xFFFFFFFF | ($n & 0x00000001) << 31

preferences:
191.37 ms | 409 KiB | 209 Q