【发布时间】:2013-08-28 04:18:33
【问题描述】:
考虑:
php > $a = 12; // 1100
php > echo ~$a;
-13
我希望1100 的倒数是0011(直接)或11110011(整个字节)。这会给3 或243 一个结果。 -13哪里来的?
再次,为了更好地衡量,另一个相同类型和解释的意外结果:
php > $b = 6; // 0110
php > echo ~$b;
-7
为什么是-7?
【问题讨论】:
-
为什么要在显示的结果中省略减号? PHP 中的整数不只是占用一个字节,通常是一个 32 位或 64 位的字,并且是有符号的。
-
我什至没有注意到那里的减号!我实际上是从一个不太理想的环境中复制它的。谢谢。
-
将结果与
0xf(1111) 相结合,因此您将得到您期望的答案:echo ~$b & 0xf,它将为您剪切前 4 位。
标签: php bit-manipulation