質問

私はキューとキューの配列を持っています。bucketsはアレイとcollectorがキューです。passは、それがどちらかを保存する整数です。peek()というキューの最初のセルのCONTSULEのCONTINSEを私に戻すメソッドがあります。shiftOne()は、1つのキューの先頭を別のキューの尾に移動させる方法です。

今このコードは私には機能しません

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

ステップバイステップで降りてきました。ビットを正しくマスキングしていません。私はそれらをシフトすることができますが、それはそれについてです。そのため、10要素配列の要素102にアクセスしようとします。私は何が悪いのですか?PowersとMostulusを使用してソートできるため、peek()shiftOne()を知っています。

役に立ちましたか?

解決

You're confusing radix-10 with radix-2.

Bit shifting is division by 2, so for example: 102 >> 1 = 102 / 2 = 51.
Similarly: 102 >> 8 = 102 / 2^8 = 102 / 256 = 0 (in int terms).

The code (i >> 8) & 0xFF for example is used to extract the content of the second byte of the given i value.

For your case - stick with divisions by 10 with modulus.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top