【问题标题】: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 涵盖了完全相同的问题。

标签: php operators bit-manipulation tilde


【解决方案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。

    【讨论】:

      猜你喜欢
      • 2019-05-08
      • 2011-08-23
      • 1970-01-01
      • 2011-04-26
      • 2021-11-03
      • 1970-01-01
      • 2013-03-06
      相关资源
      最近更新 更多