c++ - 这个表达式计算什么

标签 c++ c algorithm

假设XY是两个正整数,Y是2的幂。那么这个表达式计算什么呢?

(X+Y-1) & ~(Y-1)

我发现这个表达式出现在内存池的某些c/c++实现中(X代表以字节为单位的对象大小,Y代表以字节为单位的对齐方式,该表达式返回适合在内存池中使用的 block 大小(以字节为单位)。

最佳答案

&~(Y-1)哪里Y是 2 的幂,将最后 n 位清零,其中 Y = 2n:Y-1产生 n 个 1 位,通过 ~ 反转它会得到一个末尾带有 n 个零的掩码,并通过位级 & 进行反转将掩码为零的位清零。

实际上产生的数字是 Y 的某个倍数2 的幂。

最大可以起到减去Y-1的效果从数字中,所以首先添加,给出 (X+Y-1) & ~(Y-1) 。该数字不小于 X ,并且是 Y 的倍数.

关于c++ - 这个表达式计算什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33380303/

相关文章:

c++ - 数组的资源泄漏

c++ - 如何找到给定数组中数字之间的最大乘法(限制为 100000 个数字)

c - k&r 中的 getint 模糊定义,其中 ungetch 的奇怪行为

c - 如何检查两个文件名是否指向同一个物理文件

c - 使用 MPI_Scatter 发送矩阵的列

c++ - 如何使用指针合并 2 个数组?

c++ - 位于字符串加密密码中的断点

关于 n*n 距离矩阵的算法问题

algorithm - 使用存在量词的高效联合查找?

algorithm - 每个盒子的可能配置