将一个数字除以 2 的幂
Divide a number into powers of two?
这是问题的示例。假设我有两个数字 int basic_block 和 int 块。基本块是 2 的幂,块是可被 basic_block 整除的数字。因此,请考虑此示例,其中 basic_block = 128,块 = 640。我需要将块分成不同的数字,这些数字是 2 的幂。这两个数字应大于或等于basic_block。所以我会有 512 和 128 之类的东西。在这种情况下,我应该得到第一个数字 512,因为它是小于 2 的最大幂 小于 640。
是否有可用于执行此操作的功能?
只需循环播放 2 的幂,直到您的结果大于 block
.如果幸运的话,(2^n)>block
(block - 2^(n-1))
的结果是 2 的另一个幂,如果没有,请用 block-2^(n-1)
重新运行此函数,直到 block
为 1...
我会使用 C
数学库执行以下操作:
function int getBlockSize(int value) {
return (int)(floor(log2(value)));
}
不要忘记使用 -lm
编译器标志链接到数学库
是否有可用于执行此操作的功能?
是的,你写的那个。
你基本上需要递归地将一个数字分解成 2 的幂,可以和它,或者循环进行。
相关文章:
- 在计算中使用二的幂有多有利可图
- 如何检查一个c++字符串中有多少相同的字符/数字
- 数组/c++中的大量数字
- 在C++的一系列数字中查找重复模式
- 如何修复我的最大公约数代码?它适用于除零和零以外的所有数字
- cout 指针时的实际数字
- 获取 2D 数组 c++ 中的所有数字对
- 有效地将大数存储为 2 的幂用于路径问题
- 返回 int 中可被 2 c++ 整除的所有数字的总和
- 只有 2 和 5 作为其数字的特殊数字
- 计算 O(1) 中的幂函数
- 查找数字是否为 2 的幂的时间复杂度
- C++在不使用pow或循环的情况下计算一个数字的幂
- 使用用户定义的函数查找数字的幂时出现问题
- 更好的算法来检查一个数字是否既不是素数也不是单个素数的幂
- 我怎样才能从 n 得到一个提高到自身等于 n 的幂的数字?
- 计算数字的幂
- 递归函数,用于查找数字的幂
- 找到给定数字的最大素因数的幂
- 将一个数字除以 2 的幂