Skip to the content.

最終更新日:2026年8月3日

まず結論

16進小数を2倍、4倍、8倍するときは、いったん2進数として考えると判断しやすくなります。

2倍 = 2¹倍 → 2進数の小数点を右へ1ビット
4倍 = 2²倍 → 2進数の小数点を右へ2ビット
8倍 = 2³倍 → 2進数の小数点を右へ3ビット

基本情報技術者試験では、次の順番で解くと安全です。

1. 倍率を2のべき乗で表す
2. 16進数1桁を2進数4ビットへ直す
3. 2進数の小数点を必要なビット数だけ動かす
4. 小数点を基準に4ビットずつ区切る
5. 16進数へ戻す

判断の中心は、2ⁿ倍なら2進数の小数点を右へnビット動かすことです。

直感的な説明

10進数では、小数点を右へ1桁動かすと10倍になります。

1.25 × 10 = 12.5

これは、10進数の1桁が10倍の位置を表すためです。

同じように、2進数では小数点を右へ1ビット動かすと2倍になります。

1.01₂ = 1.25₁₀

小数点を右へ1ビット
↓

10.1₂ = 2.5₁₀

さらに右へ2ビット動かすと4倍です。

1.01₂
↓ 右へ2ビット
101₂

16進数は1桁が16倍、つまり2⁴倍の位置を表します。

そのため、16進数の小数点を1桁動かすと16倍になります。4倍のように16より小さい倍率では、16進数の桁だけを見て動かすより、2進数へ直して考える方が分かりやすくなります。

定義・仕組み

16進数1桁は2進数4ビットに対応する

16進数の1桁は、0から15までの16通りを表します。

2進数4ビットも、0000 から 1111 までの16通りを表すため、1桁ずつ対応させられます。

16進数 2進数 16進数 2進数
0 0000 8 1000
1 0001 9 1001
2 0010 A 1010
3 0011 B 1011
4 0100 C 1100
5 0101 D 1101
6 0110 E 1110
7 0111 F 1111

たとえば、16進数の 0.A6 は次のように変換できます。

A → 1010
6 → 0110

したがって、

0.A6₁₆ = 0.1010 0110₂

となります。

2のべき乗倍と小数点の移動

2進数の各桁は、左へ1桁進むごとに重みが2倍になります。

位置 重み
小数点の左1桁目 2⁰
小数点の左2桁目
小数点の右1桁目 2⁻¹
小数点の右2桁目 2⁻²

そのため、数値を2ⁿ倍するときは、小数点を右へnビット動かせます。

2ⁿ倍
→ 2進数の小数点を右へnビット

逆に、2ⁿで割るときは左へnビット動かします。

1 ÷ 2ⁿ
→ 2進数の小数点を左へnビット

計算例:16進小数を4倍する

16進数 0.A6 を4倍してみます。

まず、2進数へ変換します。

0.A6₁₆
= 0.1010 0110₂

4倍は2²倍なので、小数点を右へ2ビット動かします。

0.1010 0110₂
↓ 右へ2ビット
10.1001 10₂

16進数へ戻すため、小数点を基準に4ビットずつ区切ります。足りない部分には0を補います。

0010 . 1001 1000

各まとまりを16進数へ戻します。

0010 → 2
1001 → 9
1000 → 8

したがって、

0.A6₁₆ × 4 = 2.98₁₆

となります。

確認のため10進数で計算すると、

0.A6₁₆
= 10/16 + 6/256
= 0.6484375₁₀

0.6484375 × 4
= 2.59375₁₀

2.98₁₆
= 2 + 9/16 + 8/256
= 2.59375₁₀

となり、結果が一致します。

このテーマは、基本情報技術者試験の基礎理論や数値表現と関係します。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。

科目Aでどう出る?

科目Aでは、16進小数を2倍・4倍・8倍した結果や、2進数と16進数の対応を選ぶ問題が考えられます。

解き方の手順

倍率を確認する
↓
2の何乗かを求める
↓
16進数を2進数へ変換する
↓
小数点を動かす
↓
4ビットずつ区切って16進数へ戻す

倍率から移動量を決める

倍率 2のべき乗 小数点の移動
2倍 右へ1ビット
4倍 右へ2ビット
8倍 右へ3ビット
16倍 2⁴ 右へ4ビット
1/2倍 2⁻¹ 左へ1ビット
1/4倍 2⁻² 左へ2ビット

倍率が2のべき乗であれば、通常の掛け算をせずに桁の位置で考えられます。

16進数のまま動かせる場合

16進数1桁は2進数4ビットです。

そのため、16倍は2⁴倍なので、16進数の小数点を右へ1桁動かせます。

0.3A₁₆ × 16
= 3.A₁₆

一方、4倍は2²倍であり、16進数では半桁分に相当します。16進数の桁だけでは表しにくいため、2進数へ変換する方法が安全です。

選択肢を切る確認方法

おおよその大きさを先に確認すると、明らかな誤答を切れます。

たとえば、0.A6₁₆ は1未満です。

0.A6₁₆ ≒ 0.65₁₀

これを4倍すると約2.6なので、答えは次の範囲に入ります。

2以上3未満

整数部が1や3になっている選択肢は、細かな変換をする前に除外できます。

科目Bでどう使う?

科目Bでは、整数に対するシフト演算を含む疑似言語や処理を読むときに、同じ考え方を使います。

整数 x を左へnビットシフトする処理は、桁あふれが起きない範囲では、通常は2ⁿ倍に対応します。

xを左へ1ビットシフト
→ x × 2

xを左へ2ビットシフト
→ x × 4

たとえば、2進数 0011 は10進数の3です。

0011₂ = 3₁₀

左へ2ビット移動すると、

0011₂
↓ 左へ2ビット
1100₂

となります。

1100₂ = 12₁₀
3 × 4 = 12

プログラムを追うときは、次を確認します。

  1. 何ビット動かしているか
  2. 左シフトか右シフトか
  3. データのビット数に上限があるか
  4. 桁あふれや切捨てが起きないか
  5. 符号付き整数の場合、右シフトが論理シフトか算術シフトか

なお、小数を含む値では、プログラム内部の表現方法によって扱いが異なります。この記事の小数点移動は、数値として2のべき乗倍する原理を説明したものです。固定小数点数や浮動小数点数のビット列を、そのまま整数と同じ方法でシフトできるとは限りません。

よくある誤解・混同

誤解1:4倍なので16進数の小数点を右へ2桁動かす

16進数で小数点を右へ1桁動かすと16倍です。

16進数で右へ1桁
= 16倍
= 2⁴倍

したがって、右へ2桁では256倍になってしまいます。

4倍は2²倍なので、2進数に直して右へ2ビット動かします。

誤解2:2進数にした後、4桁動かす

16進数1桁が2進数4ビットだからといって、4倍で4ビット動かすわけではありません。

4ビット移動
= 2⁴倍
= 16倍

移動量は、16進数の桁数ではなく倍率から決めます。

4倍 = 2²倍
→ 2ビット移動

誤解3:16進数へ戻すとき、左端から4ビットずつ区切る

16進数へ戻すときは、小数点を基準に区切ります。

小数点から左へ4ビットずつ
小数点から右へ4ビットずつ

不足する部分には0を補います。

10.100110₂
↓
0010.1001 1000₂

誤解4:左シフトと小数点の移動を同じ見た目で考える

数値を2倍する説明には、次の2通りがあります。

小数点を右へ1ビット動かす
ビット列を左へ1ビット動かす

どちらも値を2倍する考え方ですが、動かしている対象が違います。

  • 小数点移動:ビット列を固定して、小数点の位置を変える
  • 左シフト:小数点の位置を固定して、ビット列を左へ動かす

「何を動かしているのか」を確認すると、方向を混同しにくくなります。

誤解5:右シフトなら必ず2ⁿで割った値になる

正の整数では、右へnビットシフトすると2ⁿで割った整数部分に対応します。

ただし、次の点には注意が必要です。

  • 余りは切り捨てられる
  • 負の数では論理シフトと算術シフトで結果が異なる
  • 固定ビット数では、左シフト時に上位ビットが失われることがある

科目Bでは、データ型やシフト方法の条件も確認します。

まとめ(試験直前用)

  • 16進数1桁は、2進数4ビットに対応する
  • 2ⁿ倍では、2進数の小数点を右へnビット動かす
  • 4倍は右へ2ビット、8倍は右へ3ビット
  • 16進数へ戻すときは、小数点を基準に4ビットずつ区切る
  • 左シフトでは、桁あふれ・切捨て・符号の扱いも確認する

© 2024-2026 stemtazoo. All rights reserved.