python保留64位中最右边的60位 - 类型错误

时间:2017-08-04 20:04:32

标签: python bit-manipulation python-3.5

我有64位整数,我想保持最正常的60位并丢弃最重要的4位。我使用的是python 3.5.4。有关这个问题的任何建议吗?

我的代码生成类型错误:

def remove_padding(num):
    num &= num >> 4
    return num

TypeError: unsupported operand type(s) for >>: 'float' and 'int'

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望保持 60 最少有效位,对吗?通过右移,你将保留60 最多有效位。

...6....'....5....'....4....'....3....'....2....'....1....'....0
DDDDKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK   Input
0000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK   Output

D =丢弃,K =保留

在这种情况下,您只需要使用十六进制And 0FFFFFFFFFFFFFFF输入:

num &= 0x0FFFFFFFFFFFFFFF