位移實現取下整

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章