在看cpython的list_resize函数时遇到了位运算的组合应用,很有意思记录下来。
new_allocated = ((size_t)newsize + (newsize >> 3) + 6) & ~(size_t)3;
其中&~3 是 与非逻辑符,目的是和4对齐。
&~3 = &~11 = &00 = 最后两位取0
此对齐方法可以用在所有2的幂对齐中 &~7,&~15 ...
在看cpython的list_resize函数时遇到了位运算的组合应用,很有意思记录下来。
new_allocated = ((size_t)newsize + (newsize >> 3) + 6) & ~(size_t)3;
其中&~3 是 与非逻辑符,目的是和4对齐。
&~3 = &~11 = &00 = 最后两位取0
此对齐方法可以用在所有2的幂对齐中 &~7,&~15 ...