問79
頻出度★★☆
8ビットの2進データXと00001111について,ビットごとの論理積をとった結果はどれか。ここでデータの左方を上位,右方を下位とする。
这道题的解析和你的作答记录。
8ビットの2進データXと00001111について,ビットごとの論理積をとった結果はどれか。ここでデータの左方を上位,右方を下位とする。
保留的一侧和变为 0 的一侧正好相反。得到「低 4 位变为 0、高 4 位保留」这样的结果,是掩码为 11110000(高位为 1、低位为 0)时的情况。而掩码 00001111 会清除 0 所在的位置(高位)、保留 1 所在的位置(低位),所以此描述不成立。
「低 4 位全部变为 1」是逻辑或(OR)的性质,而不是 AND。在 AND 中,与 1 做运算并不会把位固定为 1,只是保持原值不变。此外保留的一侧(高位/低位)对应关系也反了,属于双重错误。
正解 掩码常量 00001111 的高 4 位是 0000、低 4 位是 1111。逻辑与(AND)是「只有两者都为 1 时才为 1,否则为 0」的运算,因此某一位与 0 做 AND 必定得到 0(该位的值被清除),与 1 做 AND 则原值不变地保留下来。所以 X 与 00001111 做 AND 时,高 4 位与 0 做 AND 全部变为 0,低 4 位与 1 做 AND 后 X 的值原样保留。这与选项ウ「高 4 位全部变为 0,X 的低 4 位原样保留」一致。
「高 4 位全部变为 1」这一点是错误的。掩码的高 4 位是 0,所以 AND 的结果不会是 1,而必定是 0。把位固定为 1 是 OR 的性质,AND 无法用 1 填充某些位。