【问题标题】:Why in Python 3.6 print(-5 ^ -3) is 6? [duplicate]为什么在 Python 3.6 中 print(-5 ^ -3) 是 6? [复制]
【发布时间】:2020-10-06 11:45:23
【问题描述】:

在 Google Colaboratory 的笔记本中,它的版本是 python 3.6,通过输入以下语法 - print(-5 ^ -3),我得到的结果是 6。我想知道为什么我会得到这个结果以及python是如何解释它的。

编辑: 这个问题不是其他question 的骗子,因为这个问题只是按位异或运算的一般解释,并没有解释按位运算如何与负数一起工作(在 python 中) .

【问题讨论】:

    标签: python python-3.6


    【解决方案1】:

    负数用前导而不是前导写 零。因此,如果您只使用 8 位作为二进制补码 数字,然后您将模式从 0000000001111111 视为 从 0 到 127 的整数,并保留1xxxxxxx 用于写入 负数。 (source)


    说明:

    语句print(-5^-3) 基本上会执行-5 和-3 的bitwise-XOR 运算并打印它们的结果。让我们看看这两个数字的二进制表示

    -5 的二进制表示可以认为是1000...101,-3 的二进制表示可以认为是1000...011。这里MSB(Most Significant Bit)处的1表示二进制表示的数字是负数。

    所以 Xor 只有在两个位相反( 1 和 0 )时才会返回 1。以下是考虑到数字的 8 位表示时 xor 的工作方式。

    异或运算:

      -5   :  10000101
     ^ 
      -3   :  10000011
    ----------------------
    Result :  00000110
    

    而二进制表示中的00000110 被视为十进制中的 6。因此,打印出来的答案是 6。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2015-12-26
      • 2011-04-24
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 2019-02-18
      相关资源
      最近更新 更多