PHP,按位运算

时间:2014-03-05 07:28:33

标签: php bitwise-operators

我不明白,代码

var_dump(decbin(0xFFFFFFFF), 0xFFFFFFFF);

打印

  

string(32)“11111111111111111111111111111111”float(4294967295)

但是如果我使用按位运算获得值

$shift = 32;
$mask = ~((1 << (32 - $shift)) - 1);
var_dump(decbin($mask), $mask)

给出

  

string(32)“11111111111111111111111111111111”int(-1)

我怎样才能获得4294967295?

1 个答案:

答案 0 :(得分:1)

PHP不支持无符号整数,并且可能有一个带符号的32位整数,对于所有设置的位都是-1。

请参阅http://www.php.net/manual/en/language.types.integer.php

但是,您可以使用printf('%u')

打印出来

http://us2.php.net/manual/en/function.sprintf.php