围捕?它有什么作用?在C++中

Sup*_*ing 3 c++

有人可以向我解释这是做什么的吗?

#define ROUNDUP(n,width) (((n) + (width) - 1) & ~unsigned((width) - 1))
Run Code Online (Sandbox Code Playgroud)

Bil*_*ter 6

提供宽度是2的偶数幂(所以2,4,8,16,32等),它将返回等于或大于n的数字,这是宽度的倍数,并且是符合该标准的最小值.

所以宽度= 16; 5-> 16,7-> 16,15-> 16,16-> 16,17-> 32,18-> 32等

编辑我开始提供解释为什么它的工作原理,因为我觉得这真的是OP想要的,但它变成了一个相当复杂的故事.如果OP仍然困惑,我建议通过一些简单的例子,比如width = 16,n = 15,16,17.请记住,&=按位AND,〜=按位补码,并在处理示例时专门使用二进制表示.