给定偏移量OFF和长度LEN,隔离一组位并将其向右移动。 (用法:int持有几个具有给定偏移量和长度的小范围整数)。例如,使用偏移4和长度4,
a = 110101011000
----^^^^---- this is the group
000000000101
^^^^ isolated and right-shifted here
我目前正在使用
(a>>OFF)&((1<<(LEN+1))-1)
给出上面的例子
a 110101011000
a>>OFF 000011010101
1<<(LEN+1) 000000010000
1<<(LEN+1)-1 000000001111
(a>>OFF)&((1<<(LEN+1))-1) 000000000101
有更可读/更有效的方法吗?
答案 0 :(得分:0)
在这种情况下,没有一个正确答案。你做的很好 - 这是正确的,并且有一些文档,它也很清楚。
如果你想要不同的方式,你可以:尝试向左移动a
然后再向右移动(假设a
是无符号的 - 否则先将其转换);或者您可以先创建一个掩码(在您的情况下:000011110000),按位 - 然后,然后才移动。但是,这些并不一定比你现有的更漂亮。
答案 1 :(得分:0)
110101011000
左转 0101.1亿
右转 000000000101
这更具可读性。!