我想得到最后一位数字,例如:
num = 0b111111111
# if I want to get last 8 bits, it will be 0b11111111
# if I want to get last 2 bits, it will be 0b11
我认为这可以:
bits = 1 << n
little = num & (~bits)
但这是错误的,如果n = 8,则得到0b110111111
答案 0 :(得分:3)
这个应该有效:
mask = (1 << n) - 1
little = num & mask
1
向左移n
在1之后添加n
零位:
>>> bin(0b1 << 4)
'0b10000'
如果从中减去1,您将拥有一个设置了最后一位n
的掩码:
>>> bin((0b1 << 4) - 1)
'0b1111'
答案 1 :(得分:3)
使用bits - 1
:
>>> num = 0b111111111
>>> n = 8
>>> bits = 1 << n
>>> num & (bits - 1) # bits - 1 => 0b1111111 because bits is 0b100000000
255
>>> bin(num & (bits - 1))
'0b11111111'