将Python整数左移产生不正确的结果

将Python整数左移产生不正确的结果,python,python-2.7,type-conversion,bit-shift,Python,Python 2.7,Type Conversion,Bit Shift,谁能解释一下Python代码是如何: print "bits_received:", bits_received tmp = 0 print type(tmp) tmp = (1 << bits_received) print type(tmp) print "tmp: 0x{:X}".format(tmp) 打印“已接收位:”,已接收位 tmp=0 打印类型(tmp) tmp=(1user2357112是正确的: bits_received: 88 <type 'int'&

谁能解释一下Python代码是如何:

print "bits_received:", bits_received
tmp = 0
print type(tmp)
tmp = (1 << bits_received)
print type(tmp)
print "tmp: 0x{:X}".format(tmp)
打印“已接收位:”,已接收位
tmp=0
打印类型(tmp)

tmp=(1user2357112是正确的:

bits_received: 88 <type 'int'>
bits_received: 95 <type 'numpy.int64'>
接收到的比特数:88 收到的比特数:95
通过与另一个numpy.int64类型的变量相加,bits_接收到的变量正将其类型从int更改为numpy.int64。将另一个变量包装为“int(…)”解决了我的问题


谢谢,user2357112!

接收的位是NumPy标量。NumPy整数是固定宽度的,就像C一样。看起来NumPy给了你底层C编译器的左移行为(可能是底层机器的左移行为),而不是引发错误。
bits_received: 88 <type 'int'>
bits_received: 95 <type 'numpy.int64'>