【问题标题】:Negate bits not working as expected PHP否定位未按预期工作 PHP
【发布时间】:2014-11-05 16:53:33
【问题描述】:

这是我的问题:

<?php
$a = ~5; //0101 => 1010
echo $a;//-6

当否定运算符将 1 转换为 0 并将 0 转换为 1 时,输出应该至少为 10。为什么我得到 -6 作为输出?

【问题讨论】:

  • 我不确定你为什么期望 ~101b 变成 1010b,然后惊讶于你实际上得到了 11111111 11111111 11111111 11111010b...

标签: php bitwise-operators logical-operators


【解决方案1】:

因为 php 使用 2-complement 并将您的新 $a 视为有符号整数。

见:http://en.wikipedia.org/wiki/Two%27s_complement

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    相关资源
    最近更新 更多