java - 如何计算存储 N 位所需的 long(64 位)数?

标签 java algorithm bit-manipulation bitwise-operators

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

算法如下:

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/

相关文章:

c++ - 存储动态长度数据 'inside' 结构

javascript - 需要一种有效且正确的方法来清除 Javascript 中不确定是 1 还是 0 的位

java - Android GridView 顺序和对齐方式在滚动时困惑?

java - 浏览器堆栈本地 : running BrowserStackLocal binary from source code

c++ - Sprite 的凸多边形化

python - 关于加快旅行商问题的动态规划解决方案的建议?

java - instanceof 如何在接口(interface)上工作

java - 使用 Jsoup 登录 Post 方法到 Asp.net 表单

在 ubuntu 中将数字文字从 64 位编译器转换为 32 位编译器

MySQL按位运算,布隆过滤器