J'ai testé des opérateurs au niveau du bit en PHP et j'ai rencontré un problème très étrange. Les procédures suivantes
<?php $foon = b'11111111'; for ($i = 0; $i <= 7 ; $i++) { $foo = (($foon & (1 << $i)) > 0) ? 1 : 0; echo "目标的第" . $i . "位是" . $foo . "<br />" . PHP_EOL; }
devrait produire le résultat suivant
目标的第0位是1 目标的第1位是1 目标的第2位是1 目标的第3位是1 目标的第4位是1 目标的第5位是1 目标的第6位是1 目标的第7位是1
Cependant, le résultat réel est de
目标的第0位是1 目标的第1位是1 目标的第2位是1 目标的第3位是0 目标的第4位是0 目标的第5位是0 目标的第6位是1 目标的第7位是1
Est-ce que j'oublie quelque chose de très évident, ou y a-t-il un bug dans PHP ? J'utilise PHP version 8.2.4 installée via XAMPP. Merci beaucoup.
C'est bon, j'ai compris. b'11111111' n'est pas réellement une représentation binaire en PHP, même si elle ne génère pas d'erreur. L'attribution de 0b11111111 à ma variable me donne la bonne réponse.