Maison  >  Questions et réponses  >  le corps du texte

PHP a rencontré une exception

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.

P粉739886290P粉739886290370 Il y a quelques jours463

répondre à tous(1)je répondrai

  • P粉022723606

    P粉0227236062023-09-16 00:08:15

    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.

    répondre
    0
  • Annulerrépondre