Heim > Fragen und Antworten > Hauptteil
Ich habe bitweise Operatoren in PHP getestet und bin auf ein sehr seltsames Problem gestoßen. Die folgenden Verfahren
<?php $foon = b'11111111'; for ($i = 0; $i <= 7 ; $i++) { $foo = (($foon & (1 << $i)) > 0) ? 1 : 0; echo "目标的第" . $i . "位是" . $foo . "<br />" . PHP_EOL; }
sollte die folgende Ausgabe erzeugen
目标的第0位是1 目标的第1位是1 目标的第2位是1 目标的第3位是1 目标的第4位是1 目标的第5位是1 目标的第6位是1 目标的第7位是1
Die tatsächliche Ausgabe beträgt jedoch
目标的第0位是1 目标的第1位是1 目标的第2位是1 目标的第3位是0 目标的第4位是0 目标的第5位是0 目标的第6位是1 目标的第7位是1
Übersehe ich etwas sehr Offensichtliches oder liegt ein Fehler in PHP vor? Ich verwende PHP Version 8.2.4, installiert über XAMPP. Vielen Dank.
P粉0227236062023-09-16 00:08:15
没关系,我搞清楚了。b'11111111'实际上不是PHP中的二进制表示法,尽管它不会报错。将0b11111111赋值给我的变量会得到正确的答案。