実際に問題を解いて理解を深めよう
2進数の00000011
(10進数で3)を1ビット左シフトした場合の2進数表記と10進数表記を答えてください。
2進数:00000110
10進数:6
【解説】
ビットを左に1つずらし、右端に0を埋めます。
2進数の00001010
(10進数で10)を1ビット右シフトした場合の2進数表記と10進数表記を答えてください。
2進数:00000101
10進数:5
【解説】
ビットを右に1つずらし、左端に0を埋めます。
コンピューターのメモリ容量8GBをバイト単位で表すとき、シフト演算を使って計算してください。
(1GB = 2³⁰ バイト、8 = 2³)
8,589,934,592バイト
【解説】
8GB = 8 × 2³⁰ = 2³ × 2³⁰ = 2³³ バイト
1024×768ピクセルの画像を1/4のサイズに縮小するとき、新しい画像のピクセル数をシフト演算で計算してください。
196,608ピクセル
【解説】
1/4のサイズ = 縦横それぞれ1/2なので、全体では1/4になります。
配列の要素数が64個(2⁶個)のとき、インデックス15の要素にアクセスするための配列計算を、シフト演算を使って高速化してください。
(各要素は4バイト)
オフセット = 15 << 2 = 60バイト
【解説】
配列のオフセット計算では、インデックス×要素サイズで求めます。
IPv4アドレスのサブネットマスク「/24」は、24ビットがネットワーク部を表します。このとき、ホスト部で使用できるアドレス数をシフト演算で計算してください。
256個(実際に使える:254個)
【解説】
IPv4は32ビットなので、ホスト部は32-24=8ビットです。
10進数の25を2進数で表したものはどれか。
ア:10011 イ:11001 ウ:10101 エ:11101
イ
【解説】
2で割って余りを逆順に並べる
2進数の10110110を16進数で表したものはどれか。
ア:B6 イ:6B ウ:A6 エ:6A
ア
【解説】
4桁ずつ区切って16進数に変換
ある8ビットレジスタに16進数 A5
が格納されている。この値を2ビット左シフト(論理左シフト)した場合、レジスタに格納される16進数の値はどれか。
ア:28
イ:94
ウ:A5
エ:D4
イ
【解説】
1. 16進数 A5
を2進数に変換します。A
は 1010
、5
は 0101
なので、A5
は 1010 0101
です。
2. この値を2ビット左シフトします。左端のビットは捨てられ、右端に0が追加されます。
3. 結果の2進数 1001 0100
を16進数に変換します。1001
は 9
、0100
は 4
なので、94
です。