好吧,我可以通过逻辑来做到这一点,但我敢打赌,有一个数学运算或表达式可以做到这一点。一个存在吗?如果是,那是什么?
这是算法:
private int calcNumberOfLongs(int size) {
if (size % 64 == 0) {
return size / 64;
} else {
return size / 64 + 1;
}
}
让我清楚我想要什么:
对于 150 位,我需要三个 64 位长。两个当然只给我 128 位。所以这是第一个计算。
第二个计算,这个更重要,因为它将一直执行,是从位位置到长。例如:
bit 5 -> first long
bit 64 -> first long
bit 65 -> second long
bit 140 -> third long
获取此信息的数学表达式和/或按位运算是什么?
好的,从下面的答案看起来从位到长,我们只使用:
多头仓位 = 位仓位 / 64
续篇在这里:当二的幂时如何将除法转换为按位移位?