問題本文
8ビットの2進データXと00001111について,ビットごとの論理積をとった結果はどれか。ここでデータの左方を上位,右方を下位とする。
選択肢
- ア.下位4ビットが全て0になり,Xの上位4ビットがそのまま残る。
- イ.下位4ビットが全て1になり,Xの上位4ビットがそのまま残る。
- ウ.上位4ビットが全て0になり,Xの下位4ビットがそのまま残る。
- エ.上位4ビットが全て1になり,Xの下位4ビットがそのまま残る。
正解
ウ. 上位4ビットが全て0になり,Xの下位4ビットがそのまま残る。
解説
AND(論理積)のビットマスク演算の原理:マスクが0の部分は元データに関わらず強制的に0、マスクが1の部分は元データの値がそのまま保持される。マスク値00001111は上位4ビットが0000(強制ゼロ化)・下位4ビットが1111(元データ保持)。したがってX AND 00001111の結果は上位4ビットが全て0、下位4ビットはXの元の値が保持される。この性質を利用して特定のビット範囲を取り出す「ビットマスク(抽出)」操作は、フラグ管理・IPアドレスのネットワーク部抽出等に広く使われる。
選択肢ごとの解説
- ア.誤り。マスク00001111の上位4ビットは0なので、AND演算で上位4ビットは全て0になる(Xの上位ビットが残るという説明は誤り)。0 AND X=0というAND演算の基本性質により、マスクが0の部分の演算結果は元データの値に関わらず必ず0になる。
- イ.誤り。AND演算でマスクが1の部分の結果は元データの値(0または1)がそのまま保持されるため「全て1になる」わけではない。1 AND 0=0、1 AND 1=1というAND演算の性質により、下位4ビットはXの元の値がそのまま反映される。全て1になるのはORマスクでマスクが1の場合。
- ウ.正解。AND演算ではマスク0の部分が強制ゼロ化(上位4ビット→全て0)・マスク1の部分が元データ保持(下位4ビット→Xの値をそのまま反映)となる。マスク00001111を使ったAND演算は下位4ビットの値を抽出し上位4ビットをゼロクリアするビット操作として活用される。
- エ.誤り。マスクの上位が0000なのでAND演算で上位4ビットは強制的に0になり全て1になることはない。マスクが0の部分が1になる演算はANDではなく0 OR X=X(ORでマスクが0の部分)の場合の話であり、ANDとORの演算特性を混同した誤りとなる。
ITパスポート 2018年 (平成30年 秋期) の過去問一覧へ戻る・問79