Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么python按位运算符不能处理bin()返回的内容_Python_Python 3.x_Bitwise Operators - Fatal编程技术网

为什么python按位运算符不能处理bin()返回的内容

为什么python按位运算符不能处理bin()返回的内容,python,python-3.x,bitwise-operators,Python,Python 3.x,Bitwise Operators,我一直在做一些关于位运算符的工作,通常是从使用bin转换整数开始的。我每次尝试都会出错 foo = 5 binfoo = bin(foo) bar = ~(binfoo) 最后一行是我们搞砸的地方 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: bad operand type for unary ~: 'str' 如果bin返回一个字符串,那么这些位运

我一直在做一些关于位运算符的工作,通常是从使用bin转换整数开始的。我每次尝试都会出错

foo = 5
binfoo = bin(foo)
bar = ~(binfoo)
最后一行是我们搞砸的地方

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: bad operand type for unary ~: 'str'
如果bin返回一个字符串,那么这些位运算符需要什么?

一元位运算符需要整数输入。在Python参考文档的表达式一章中:

一元~invert运算符生成其整数参数的按位反转。x的位反转定义为-x+1。它只适用于整数

我的

将~应用于5个工程即可:

>>> ~5
-6

bin函数只返回一个以二进制形式表示的字符串对象。可以将其视为一种调试工具,它可以快速向您显示整数的设置位和未设置位。要实际操作位,您仍然需要一个整数。

按位运算符需要整数,请尝试~foo。bin函数用于为输出创建二进制字符串表示。因为bin返回字符串,所以不是整数位运算符处理整数,而不是字符串。在引擎盖下的整数是位模式,位运算符直接处理位模式。它们不处理那些位模式的字符串表示。为什么您认为按位运算符通常从使用bin开始?事实上,他们从来没有这样开始过。不过,这是一个有用的问题,因为对于编程新手来说,这是一个相当自然的问题。我认为它不值得投反对票。