我有一个队列和一个队列数组。 buckets 是数组并且 collector 是队列。 pass 是一个整数,保存了它所在的通道。我有一个方法可以返回队列第一个单元格的内容,称为 peek(). shiftOne() 是一种将一个队列的头部移动到另一个队列的尾部的方法。

现在这段代码对我不起作用

bucket[((collector.peek()>>(pass * 8)) &0xFF)].shiftOne(collector);

我一步一步走来,结果发现我没有正确屏蔽这些位。我可以改变它们,但仅此而已。因此,我将尝试访问 10 元素数组的元素 102。我究竟做错了什么?我知道 peek()shiftOne() 因为我可以使用幂和模进行排序。

有帮助吗?

解决方案

您将 radix-10 与 radix-2 混淆了。

位移位除以 2,例如: 102 >> 1 = 102 / 2 = 51.
相似地: 102 >> 8 = 102 / 2^8 = 102 / 256 = 0(在 int 条款)。

代码 (i >> 8) & 0xFF 例如用于提取内容 第二个字节 给定的 i 价值。

对于你的情况 - 坚持用模数除以 10。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top