まあ、論理的にそれを行うことはできますが、それを行うための数学的操作または式があるに違いありません。存在しますか?はいの場合、それは何ですか?
アルゴリズムは次のとおりです。
private int calcNumberOfLongs(int size) {
if (size % 64 == 0) {
return size / 64;
} else {
return size / 64 + 1;
}
}
私が欲しいものを明確にしましょう:
150 ビットの場合、3 つの 64 ビット long が必要です。もちろん、2つでは128ビットしか得られません。それが最初の計算です。
2 番目の計算は、常に実行されるためさらに重要ですが、ビット位置から long に移動することです。例えば:
bit 5 -> first long
bit 64 -> first long
bit 65 -> second long
bit 140 -> third long
この情報を取得するための数式および/またはビット演算は何ですか?
わかりました、以下の回答から、ビット位置からロングに移動するように見えます。使用するだけです:
ロングポジション = ビットポジション / 64
続きはこちら: 2 のべき乗のときに除算をビット単位のシフトに変換する方法は?