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

python保留64位类型错误中最右边的60位,python,bit-manipulation,python-3.5,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' 如果我理解正确,您希望保留60个最低有效位,对吗?通过右移,可以保留

我有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'

如果我理解正确,您希望保留60个最低有效位,对吗?通过右移,可以保留60个最高有效位

...6....'....5....'....4....'....3....'....2....'....1....'....0
DDDDKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK   Input
0000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK   Output
D
=放弃,
K
=保留

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

num &= 0x0FFFFFFFFFFFFFFF

什么是
num
?你确定它是整数吗?它是64位整数。我认为Python3.5不承认它是整数。Python应该支持这一点,所以它很难理解为什么会这样。@tadman给定64位整数,我执行了位操作n&=n>>4。这会有问题吗?当我在Python3上测试它时,它工作了,你也应该这样做,但这取决于数字实际上是一个整数,而不是一个浮点数。