Странное поведение. Мне было интересно, может ли кто-нибудь прояснить ситуацию для меня.
Проверьте это
$hex = 0x80008000;
print_r(decbin(intval($hex)) . '<br/>');
print_r(decbin($hex));
Выходы
10000000000000001000000000000000
10000000000000001000000000000000
Как и ожидалось.
Но
$hex = 0x80008000;
print_r(decbin(~intval($hex)) . '<br/>');
print_r(decbin(~$hex));
Выводы
1111111111111110111111111111111
1111111111111111111111111111111
Почему средний бит не переключается, когда $hex
инвертируется?