Jon*_*min -1 c++ bit-manipulation bitwise-operators
这是什么& ~(minOffsetAlignment - 1)
意思?
这是否意味着析构函数的地址?
这是我从中得到的代码片段。
VkDeviceSize 是 uint64_t。
VkDeviceSize getAlignment(VkDeviceSize instanceSize, VkDeviceSize minOffsetAlignment)
{
if (minOffsetAlignment > 0)
{
return (instanceSize + minOffsetAlignment - 1) & ~(minOffsetAlignment - 1);
}
return instanceSize;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
将某个数字与某个边界对齐是一个常见的技巧。它假设 minOffsetAlignment 是 2 的幂。
如果 minOffsetAlignment 是 2 的幂,则其二进制形式将为 1 后跟 0。例如,如果是 8,则二进制将是b00001000
.
如果减一,它将成为一个掩码,其中所有可以更改的位都将被标记为 1。对于同一个例子,它将是b00000111
(从 0 到 7 的所有数字)。
如果你取这个数字的补码,它就成为一个用于清除的掩码。在示例中,b11111000
.
如果针对此掩码对任何数字执行 AND (&) 操作,则会将与对齐下方的数字相关的所有位清零。
例如,假设我有数字 9 b00001001
。执行 9&7 是b00001001
& ,b11111000
其结果是b00001000
or 8。
结果值是针对给定金额对齐的计算值。
归档时间: |
|
查看次数: |
171 次 |
最近记录: |