平成18年 秋期 基本情報技術者 午前 問1

1バイトのデータで0のビット数と1のビット数が等しいもののうち、符号なしの2進整数としてみたとき最大となるものを、10整数で表したものはどれか。

 ア  120
 イ  127
 ウ  170
 エ  240


答え エ


解説
1バイトは8ビット(どこにも書いてないけど「0のビット数と1のビット数が等しい」と書いてあるから偶数なので1バイトは8ビットとします。)なので、求めるデータはビットで書くと0の数が4個と1の数が4個になります。

例)1バイトのデータをビットで表す方法を(b7 b6 b5 b4 b3 b2 b1 b0)とすると、求めるデータは(00001111)、(01010101)、(11110000)等になります。
また、ここでは(b7 b6 b5 b4 b3 b2 b1 b0)の左側を上位ビット、右側を下位ビットと呼び、b7を最上位ビット、b0を最下位ビットと呼びます。

この中で最も大きいもので探すわけですが、ここで注意が必要なのは『符号付』か『符号なし』かです。問題文に『符号なし』となっていますので最上位ビット(b7)は1としてよいことがわかります。すなわち求めるデータは(1xxxxxxx)になります。

あとは、最も大きいですから上位ビットを1に下位ビットを0にして求めるデータは(11110000)になります。
これを10進数にするには各ビットの値を足算すれば求められるので、b7=128、b6=64、b5=32、b4=16、b3=8、b2=4、b1=2、b0=1ですから、(11110000)で1となっているビットを足します。
 (11110000)=b7+b6+b5+b4=128+64+32+16=240
(エ)になります。


もし、問題が『符号付』の場合、最上位ビット(b7)は正負を表す符号で、0が正、1が負になるので求めるデータはb7が0になりb6からb3までの4ビットが1になります。
(01111000)=b6+b5+b4+b3=64+32+16+8=120になります。


キーワード
・バイトとビット
・符号付と符号なし

キーワードの解説

戻る 一覧へ 次へ