字節對齊

在內存管理中經常使用字節對齊來分配內存,有關字節對齊的算法如下:
1 原理:
2字節對齊,要求地址位爲2,4,6,8...,要求二進制位最後一位爲0(2的1次方)
4字節對齊,要求地址位爲4,8,12,16...,要求二進制位最後兩位爲0(2的2次方)
8字節對齊,要求地址位爲8,16,24,32...,要求二進制位最後三位爲0(2的3次方)
16字節對齊,要求地址位爲16,32,48,64...,要求二進制位最後四位爲0(2的4次方)
...
由此可見,我們只要對數據補齊對齊所需最少數據,然後將補齊位置0就可以實現對齊計算。
 
2 字節對齊實現:
#define ROUND_UP(x, align) (x+(align-1))&~(align-1)
align爲2,2字節對齊
align爲4,4字節對齊
align爲8,8字節對齊
...
 
3 字節對齊算法:
(1)(align-1),表示對齊所需的對齊位,如:2字節對齊爲1,4字節爲11,8字節爲111,16字節爲1111...
(2)(x+(align-1)),表示x補齊對齊所需數據
(3)&~(align-1),表示去除由於補齊造成的多餘數據
(4) (x+(align-1))&~(align-1),表示對齊後的數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章