You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP位运算符异常问题求助:预期与实际输出不符

PHP位运算符测试异常问题解答

问题根源在于你混淆了字节字符串和二进制数值的概念:

  • b'11111111'是PHP的二进制安全字符串,表示包含8个ASCII字符'1'的字符串,每个字符的ASCII码为0x31(十进制49)。
  • 当字符串与整数进行位运算时,PHP会将纯数字字符串转换为十进制整数,这里b'11111111'会被转为11111111,它的二进制是10101001100010110001111,其中第3、4、5位为0,这就是你得到异常输出的原因。

解决方案

要表示二进制值11111111(即十进制255),可以使用以下任意一种写法:

  • 二进制字面量:$foon = 0b11111111;
  • 十进制数值:$foon = 255;
  • 十六进制数值:$foon = 0xff;

修改后的代码示例

<?php
  $foon = 0b11111111;

  for ($i = 0; $i <= 7 ; $i++) {
    $foo = (($foon & (1 << $i)) > 0) ? 1 : 0;
    echo "bit " . $i . " of target is " . $foo . "<br />" . PHP_EOL;
  }

运行上述代码后,会输出你预期的全1结果。

内容的提问来源于stack exchange,提问作者fat penguin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:02:14