对于相同的操作数,按位左移不同的结果



考虑数组

a = np.array([64,  8, 16, 24, 32, 40, 48, 56, 64])

它的第一个和最后一个元素是相同的

a[0] == a[-1]
# True

现在让我们左移a

b = 1<<a

并比较第一个和最后一个元素

b[0] == b[-1]
# False

这到底是怎么回事?

任何人都可以重现这一点吗?这是一个错误吗?

实际值

b
# array([                0,               256,             65536,
#                 16777216,        4294967296,     1099511627776,
#          281474976710656, 72057594037927936,                 1])

numpy版本是 1.17.0 在Python3.6.5

期望值

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

相关

https://github.com/numpy/numpy/issues/10299

对我来说,它显示的是真的: 蟒蛇 3.7.4 数字 1.17.x

import numpy
 a = numpy.array([10,20,15,10])
 a[0]==a[-1]
True
 b = 1<<a
 b[0] == b[-1]
True


最新更新