0

好吧,我可以通过逻辑来做到这一点,但我敢打赌,有一个数学运算或表达式可以做到这一点。一个存在吗?如果是,那是什么?

这是算法:

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

续篇在这里:当二的幂时如何将除法转换为按位移位?

4

1 回答 1

5

我不相信有一个内置函数可以做到这一点,尽管您可以将代码简化为:

return (size + 63) / 64;
于 2012-12-09T04:12:08.077 回答