嗯,我可以通过逻辑做到这一点,但我打赌有一个数学运算或表达式来做到这一点。有人存在吗?如果是,那是什么?
以下是算法:
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
延续时间在此处:How to turn a division into a bitwise shift when power of two?
答案 0 :(得分:5)
虽然您可以将代码简化为:
,但我认为没有内置函数可以执行此操作return (size + 63) / 64;