Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 相同操作数的不同结果按位左移_Python_Numpy_Bit Shift - Fatal编程技术网

Python 相同操作数的不同结果按位左移

Python 相同操作数的不同结果按位左移,python,numpy,bit-shift,Python,Numpy,Bit Shift,以数组为例 a = np.array([64, 8, 16, 24, 32, 40, 48, 56, 64]) 它的第一个和最后一个元素是相同的 a[0] == a[-1] # True 现在让我们左移a b = 1<<a 这到底是怎么回事 有人能复制这个吗?这是虫子吗 实际值为 b # array([ 0, 256, 65536, # 16777216,

以数组为例

a = np.array([64,  8, 16, 24, 32, 40, 48, 56, 64])
它的第一个和最后一个元素是相同的

a[0] == a[-1]
# True
现在让我们左移
a

b = 1<<a
这到底是怎么回事

有人能复制这个吗?这是虫子吗

实际值为

b
# array([                0,               256,             65536,
#                 16777216,        4294967296,     1099511627776,
#          281474976710656, 72057594037927936,                 1])
numpy
版本在
Python
3.6.5上是1.17.0

预期值

任何一个值都有其逻辑:0=1*2^64 mod 2^64和1=1*2^(64 mod 64)

相关的

对我来说,这是真实的: python 3.7.4 numpy 1.17.x

导入numpy
 a=numpy.array([10,20,15,10])
 a[0]==a[-1]
真的

 b=1您得到的
b
值是多少?我在python.org网站上尝试了这个方法,效果很好。作为参考和理解,期望值是多少?@DanielAaron我期望为0,但不是100%确定。在任何情况下,我都希望重复计算的值是相同的。它实际上是1,这似乎是一个bug,不确定是什么原因造成的。我使用了python 3.7.3和Numpy 1.17。2@DanielAaron你确定吗?逻辑是什么?你能得到具体的版本吗?导入numpy numpy.version.versionyeah其1.17.2是否可以尝试与OP中完全相同的
a
?我为问题添加了预期结果@PaulPanzer@DanielAaron这不是我所期望的。根据文档:通过在x1的右侧追加x2 0,位向左移位。由于数字的内部表示为二进制格式,因此此操作相当于x1乘以2**x2。
b
# array([                0,               256,             65536,
#                 16777216,        4294967296,     1099511627776,
#          281474976710656, 72057594037927936,                 1])