我写了这个简单的代码:按位运算符。输出非常奇怪。
如果我将按位操作(mask)从1<<i
更改为1>>i
,并且始终为0。请参见输出。你知道吗
reg=31272
#binreg=111101000101000
print bin(reg)
for i in range(0,15):
mask=1<<i
c=reg & mask
print "i:", i ,"c:", c ,"-", bin(c)
输出:
bitwise_little_endian():
0b111101000101000
i: 0 c: 0 - 0b0
i: 1 c: 0 - 0b0
i: 2 c: 0 - 0b0
i: 3 c: 8 - 0b1000
i: 4 c: 0 - 0b0
i: 5 c: 32 - 0b100000
i: 6 c: 0 - 0b0
i: 7 c: 0 - 0b0
i: 8 c: 0 - 0b0
i: 9 c: 512 - 0b1000000000
i: 10 c: 0 - 0b0
i: 11 c: 2048 - 0b100000000000
i: 12 c: 4096 - 0b1000000000000
i: 13 c: 8192 - 0b10000000000000
i: 14 c: 16384 - 0b100000000000000
bitwise_big_endian():
0b111101000101000
i: 0 c: 0 - 0b0
i: 1 c: 0 - 0b0
i: 2 c: 0 - 0b0
....
....
这里是您的代码的重写版本,修改后以更可读的方式打印结果(注意,
bit_length()
的使用需要python2.7+)。你知道吗输出:
输出对我来说似乎有意义。您需要了解掩蔽运算的结果可能是一个相对较大的数字,因为它只是隔离了被测试的位,但位仍然在被测试整数值的内部二进制表示中的原始位置。你知道吗
相关问题 更多 >
编程相关推荐