对于所提供的评论,我无法理解以下代码。这段代码的作用是什么,以及等效的代码是什么8-aligned
?
/* segment size must be 4-aligned */
attr->options.ssize &= ~3;
Here, ssize
is of unsigned int
type.
由于二进制中的 4 是 100,因此任何与 4 字节边界对齐的值(即 4 的倍数)都会将最后两位设置为零。
二进制中的 3 是 11,~3 是这些位的按位求反,即 ...1111100。与该值执行按位 AND 将使每一位保持相同,除了最后两位将被清除(位 & 1 == 位,位 & 0 == 0)。这为我们提供了下一个较低或相等的值,该值是 4 的倍数。
要对 8(二进制为 1000)执行相同的操作,我们需要清除最低三位。我们可以通过二进制 111(即 ~7)的按位求反来做到这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)