在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取下整。