〜位运算符(波浪号)的功能是啥[重复]
Posted
技术标签:
【中文标题】〜位运算符(波浪号)的功能是啥[重复]【英文标题】:What's the function of the ~ bitwise operator (Tilde) [duplicate]〜位运算符(波浪号)的功能是什么[重复] 【发布时间】:2012-02-26 03:15:02 【问题描述】:可能重复:What does this ~ operator mean here?Bit not operation in php(or any other language probably)
谁能解释一下 PHP 中的 ~
运算符?我知道是NOT-operator,但是PHP为什么要把下面的语句转换成变量的负值减一呢?
$a = 1; echo ~$a // echo -2
$a = 2; echo ~$a // echo -3
$a = 3; echo ~$a // echo -4
【问题讨论】:
有关这方面的信息可在整个互联网上获得 在副本中,没有任何与二进制补码运算相关的内容,这就是这个问题的本质。我怀疑它是 exact 重复的。但是,这个this question 涵盖了完全相同的问题。 【参考方案1】:这称为补码算法。你可以阅读它in more detail here。
运算符~
是一个二元否定运算符(与布尔否定相反),因此,它反转其操作数的所有位。结果是二进制补码算术中的负数。
【讨论】:
【参考方案2】:按位非。
它将所有 1 转换为 0,将所有 0 转换为 1。所以 1 变为 -2(二进制表示为 0b111111111110)。
查看文档 http://php.net/manual/en/language.operators.bitwise.php
【讨论】:
-2 确实。刚刚检查过。 确实如此。它是按位非,但有符号数字表示使 显示为 ie,。 -2。但是如果你看二进制级别,你会发现它完全是一个否定。【参考方案3】:~
翻转数字的所有位。在二进制补码(google it)中,数学否定是通过翻转所有位然后加 1 来实现的。如果你只做第一步(即:只是翻转位),你有加法逆减 1。
【讨论】:
以上是关于〜位运算符(波浪号)的功能是啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章
波浪线(波浪线)(即“~”运算符在 Python 中的作用是啥? [复制]