简体   繁体   English

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

[英]python keep 60 right most bits out of 64 bits - type error

I have 64 bits integer and I would like to keep right most 60 bits and discard most significant 4 bits. 我有64位整数,我想保留最右边的60位,舍弃最重要的4位。 I am using python 3.5.4. 我正在使用python 3.5.4。 Any advice on this problem? 关于这个问题有什么建议吗?

My code is generating type error: 我的代码生成类型错误:

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

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

If I understand you correctly, you want to keep the 60 least significant bits, right? 如果我理解正确,您想保留 60个最低有效位,对吗? By rightshifting you would keep the 60 most significant bits. 通过右移,您将保留60个最高有效位。

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

D = Discard, K = Keep D =放弃, K =保留

In this case, you just need to And your input with hexadecimal 0FFFFFFFFFFFFFFF : 在这种情况下,您只需要And输入十六进制0FFFFFFFFFFFFFFF

num &= 0x0FFFFFFFFFFFFFFF

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM