chr*_*tek 0 java algorithm bit-manipulation bitwise-operators
好吧,我可以通过逻辑做到这一点,但我打赌有一个数学运算或表达式来做到这一点.有人存在吗?如果是,那是什么?
这是算法:
private int calcNumberOfLongs(int size) {
if (size % 64 == 0) {
return size / 64;
} else {
return size / 64 + 1;
}
}
Run Code Online (Sandbox Code Playgroud)
让我清楚我想要的东西:
对于150位,我需要三个64位长.两个当然只给我128位.这是第一次计算.
第二个计算,这一个更重要,因为它将一直执行,是从位位置变为长位.例如:
bit 5 -> first long
bit 64 -> first long
bit 65 -> second long
bit 140 -> third long
Run Code Online (Sandbox Code Playgroud)
获取此信息的数学表达式和/或按位运算是什么?
好的,从下面的答案来看,它似乎是从位位置变长,我们只是使用:
多头头寸=比特头寸/ 64
延续在这里:如何在2的幂时将除法变为按位移位?
尽管您可以将代码简化为:我不相信有内置函数可以执行此操作:
return (size + 63) / 64;
Run Code Online (Sandbox Code Playgroud)