在postgresql中有如下定义:(引用于postgresql内核)
表示对ALIGNVAL取整,ALIGNVAL为2的幂。
#define TYPEALIGN_DOWN(ALIGNVAL,LEN) \
(((uintptr_t) (LEN)) & ~((uintptr_t) ((ALIGNVAL) - 1)))
ALIGNVAL为2的幂,2,4,8等。
本文以4为例子做解释:
看宏:
4-1 = 3;
3的2进制表示低2位为1,取反 得低2位为0;
11111111111111111111111111111100;
然后&LEN,表示将LEN的低2位置零。
,如果是8的话,表示对8取下整。