Python中的异或,SyntaxError,为什么?

问题描述

>>> x = 1101 ^ 0111
  File "<stdin>",line 1
    x = 1101 ^ 0111
                  ^

语法错误:令牌无效

为什么我在 python 中收到这个语法错误?我在网上看到,“^ 按位互斥异或 描述 返回两个整数按位异或的结果。

语法 A^B

A 整数对象。 乙 整数对象。”

所以我想我使用了两个整数。

解决方法

11010111 应该是位吗?要表示位文字,您应该使用 0b11010b0111,否则这些都是整数(并且整数不能以 0

开头 ,

首先,您不能以这种方式使用整数。这是我运行您的代码时遇到的错误:

SyntaxError: leading zeros in decimal integer literals are not permitted;
use an 0o prefix for octal integers

换句话说,你不能给 Python 一个以零开头的整数。这曾经在 Python 2 中工作,但在 Python 3 中不再支持。(参见 https://stackoverflow.com/a/11620174/7583007

我假设您正在尝试使用二进制数?如果是这样,你应该试试这个:https://stackoverflow.com/a/19414115/7583007

,

我相信你想要:

0b1101 ^ 0b0111

通常,您收到的错误是因为您在数字前放置了一个“0”,这是 python 不允许的。如果您尝试这样做,也会发生同样的情况:

078

数字的开头以零开头,通常是特殊的 Python 代码,表示您将提供二进制数、八进制数或十六进制数,它们分别以 0b、0o 或 0x 开头。