#define ROUND(x,y) (((x)+(y-1))&~(y-1)) 作用

主要作用將X向上歸整爲Y的倍數,規則後的數值Z >X 。

當y爲2的n次冪時,y-1就是一個前面全是0,後面n位全是1的二進制數。取反後則前面全是1,後面n位全是0。
於是x加上y-1後,如果原來x的後n位不全爲0,則會導致第n+1位被進位,否則x和y-1相加後不影響x前面的位。
這樣,最後再用y的取反來保留前面的位,清空後面的位,就得到了一個剛好不小於x,而且低n位全部爲0的數,也就是剛好不小於x的2的n次方的整數倍。

當申請內存空間時,爲了減少內存碎片,常常申請2的n次冪大小的空間,就可以用這種方式來對齊。當然 ,一般好一點兒的操作系統,都在系統內做了相關處理,沒有必要這樣做。但做底層代碼的話,還是很有用的。

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