好吧,我可以通过逻辑来做到这一点,但我敢打赌有一个数学运算或表达式可以做到这一点。一个存在吗?如果是,那是什么?
算法如下:
private int calcNumberOfLongs(int size) {
if (size % 64 == 0) {
return size / 64;
} else {
return size / 64 + 1;
}
}
让我说清楚我想要什么:
对于 150 位,我需要三个 64 位长整数。两个当然只给我 128 位。这是第一个计算。
第二个计算,这个更重要,因为它会一直执行,是从 bit position 到 long。例如:
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?
最佳答案
我不相信有内置函数可以做到这一点,尽管您可以将代码简化为:
return (size + 63) / 64;
关于java - 如何计算存储 N 位所需的 long(64 位)数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13784540/