隐藏在C语言里面的奇技淫巧
对齐到最近的8的倍数。
这个表达式 (size + 7) & ~(7)
是一个常见的位操作技巧,用于将 size
向上对齐到最近的8的倍数。
~(7)
:首先,7
的二进制表示是0111
。按位取反~
操作会将所有的1变为0,所有的0变为1,所以~(7)
就是1...1000
。size + 7
:这个操作是将size
增加7。这确保了如果size
不是8的倍数,那么通过加7,它至少会达到下一个8的倍数减1。&
:这是按位与操作。当(size + 7)
和1000
(即~(7)
)进行按位与操作时,(size + 7)
中低于8的所有位都会被清零,因为1000
中这些位都是0。
综合以上步骤,这个操作的效果是将 size
向上对齐到最近的8的倍数。例如,如果 size
是10(二进制表示为 1010
),那么 (size + 7)
就是17(二进制表示为 10001
),然后和 1...1000
进行按位与操作后,结果就是16(二进制表示为 10000
),这是大于10的最小的8的倍数。
标签:技巧,二进制,C语言,按位,倍数,1000,size From: https://www.cnblogs.com/cyj22/p/17899412.html