問題本文
二つの2進数01011010と01101011を加算して得られる2進数はどれか。ここで,2進数は値が正の8ビットで表現するものとする。
選択肢
- ア.00110001
- イ.01111011
- ウ.10000100
- エ.11000101
解説
2進数01011010と01101011の加算。01011010(2)=0×128+1×64+0×32+1×16+1×8+0×4+1×2+0×1=64+16+8+2=90(10)。01101011(2)=0×128+1×64+1×32+0×16+1×8+0×4+1×2+1×1=64+32+8+2+1=107(10)。90+107=197(10)。197を2進数に変換:197÷2=98余1、98÷2=49余0、49÷2=24余1、24÷2=12余0、12÷2=6余0、6÷2=3余0、3÷2=1余1、1÷2=0余1。下から読んで11000101(2)=197。
選択肢ごとの解説
- ア.誤り。00110001(2)=49(10)。01011010(2)=90と01101011(2)=107の和は197であり49とは大きく異なる。両数の排他的論理和(XOR)などの誤った演算から生じる値である。
- イ.誤り。01111011(2)=123(10)。90+107=197とは一致しない。01011010と01101011のビット単位論理和(OR)=01111011=123が得られるが、設問は加算を求めている。
- ウ.誤り。10000100(2)=132(10)。90+107=197とは一致しない。ビット数の制限を誤解したり桁上がりを一部見落としたりした場合に生じる誤答。8ビット符号あり整数としての演算と混同した可能性がある。
- エ.正しい。90+107=197(10)。197=128+64+4+1=11000101(2)。01011010(2)+01101011(2)を2進数で直接計算しても各桁の桁上がりを正確に処理すると11000101(2)が得られる。
ITパスポート 2017年 (平成29年 春期) の過去問一覧へ戻る・問72