有人可以解释一下~
PHP 中的运算符吗?我知道它是一个NOT-operator,但为什么 PHP 将以下语句转换为变量的负值减一?
$a = 1; echo ~$a // echo -2
$a = 2; echo ~$a // echo -3
$a = 3; echo ~$a // echo -4
有人可以解释一下~
PHP 中的运算符吗?我知道它是一个NOT-operator,但为什么 PHP 将以下语句转换为变量的负值减一?
$a = 1; echo ~$a // echo -2
$a = 2; echo ~$a // echo -3
$a = 3; echo ~$a // echo -4
这称为二进制补码算术。您可以在此处更详细地了解它。
该运算符~
是二元否定运算符(与布尔否定相反),因此,它反转其操作数的所有位。结果是二进制补码算术中的负数。
这是一个按位NOT。
它将所有 1 转换为 0,将所有 0 转换为 1。所以 1 变为 -2(二进制表示为 0b111111111110)。
看看文档 http://php.net/manual/en/language.operators.bitwise.php
~
翻转数字的所有位。在二进制补码(google it)中,可以通过翻转所有位然后加 1 来实现数学否定。如果您只执行第一步(即:仅翻转位),您将得到加法逆负 1。