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])