<?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