我有一个队列和一组队列。 buckets
是数组,collector
是队列。 pass
是一个整数,可以保存它的传递。我有一个方法,它返回给我的名为peek()
的队列的第一个单元格的包含。 shiftOne()
是一种将一个队列的头部移动到另一个队列的尾部的方法。
现在这段代码对我不起作用
bucket[((collector.peek()>>(pass * 8)) &0xFF)].shiftOne(collector);
我已经一步一步走了,事实证明我没有正确掩盖这些位。我可以改变它们,但这就是它。因此,我将尝试访问元素102以获取10个元素的数组。我究竟做错了什么?我知道peek()
和shiftOne()
,因为我可以使用幂和模数进行排序。
答案 0 :(得分:2)
你把radix-10与radix-2混淆了。
比特移位除以2,例如:102 >> 1
= 102 / 2
= 51。
同样:102 >> 8
= 102 / 2^8
= 102 / 256
= 0(int
条款)。
例如,代码(i >> 8) & 0xFF
用于提取给定i
值的第二个字节的内容。
对于你的情况 - 坚持使用模数为10的除法。