搞不懂?各位帮给个答案

#为什么要构造一个低4位为1,其余各位为0的整数,还要z=x&y

img


?不构造不也是一样的结果吗

为了让你进行与运算

你要的是右端开始4-7位的数,那么说明其他位肯定是不要的,那就其他位&0,4-7位&1,这样就能得到4-7位的数,移位之后输出即可

构造的那个东西叫“蒙板” 或者叫“掩码”,意思就是掩盖一部分只让需要的部分通过
因为一个byte是8位,我如果只想让其中几位透过,其他的被“掩码”过滤掉,我就要在前面加个“滤光镜”么。

对,俺们也可以叫“滤光镜”,白光是7色混合,当我只需要某几色通过的时候,我们就在前面加“滤光镜”不是么

就像楼上那位手绘图展示给你的,00111000,他构造了一个“滤光镜”只允许中间那3位通过,所以前面 01——101——010 前后被滤掉了只保留了中间3个掩码置1的数据,结果成了 00——101——000

无符号的整数是32位的。你只取4-7位。如果第8-31位上有‘1’,你没有这一步结果就错了。这一步是将右移后的高位都置0,只保留低位有效。