導入
技術士第一次試験の情報系分野では、基数変換・補数表現・浮動小数点数が頻出テーマとして出題されます。
特に、2進数・10進数・16進数の変換、2の補数による負数表現、単精度浮動小数点数の計算は、問題文だけを見ると難しく感じやすい分野です。
しかし、これらは考え方と手順を押さえれば、比較的得点源にしやすいテーマでもあります。
浮動小数点数も一見複雑に見えますが、実際には「2進数に変換する」「正規化する」「符号部・指数部・仮数部に当てはめる」という流れで整理できます。
この記事では、初心者や機械設計分野から情報系分野を学び始めた方に向けて、基数変換・補数表現・浮動小数点数の解き方を順番に解説します。
この記事で分かることは、次のとおりです。
- 2進数・10進数・16進数の基本
- 基数変換の計算手順
- 2の補数による負数の表し方
- 浮動小数点数の構造
- 単精度浮動小数点数の解き方
- 試験で計算ミスを減らすコツ
目次
- 基数変換とは?2進数・10進数・16進数の基本
- 基数変換の解き方
- 補数表現とは?負の数を2進数で表す仕組み
- 浮動小数点数とは?符号部・指数部・仮数部を理解する
- 例題:-6.5を単精度浮動小数点数で表す手順
- 技術士第一次試験で得点するためのコツ
- FAQ
- まとめ
基数変換とは?2進数・10進数・16進数の基本
基数変換とは、ある進数で表された数を、別の進数に変換することです。
普段の生活では、私たちは主に10進数を使っています。
一方、コンピュータ内部では、基本的に0と1だけを使う2進数で情報を扱います。
そのため、情報系分野では次のような変換がよく出題されます。
- 10進数から2進数への変換
- 2進数から10進数への変換
- 2進数から16進数への変換
- 16進数から2進数への変換
基数変換は、補数表現や浮動小数点数を理解するための土台にもなります。
まずは、2進数・10進数・16進数の違いを整理しておきましょう。
10進数・2進数・16進数の違い
それぞれの進数で使う数字は、次のように異なります。
| 種類 | 使う数字 | 特徴 |
|---|---|---|
| 10進数 | 0〜9 | 普段の生活で使う表記 |
| 2進数 | 0、1 | コンピュータ内部で使われる基本表記 |
| 16進数 | 0〜9、A〜F | 2進数を短く表すときに便利 |
16進数では、10以上の数をアルファベットで表します。
| 16進数 | 10進数 |
|---|---|
| A | 10 |
| B | 11 |
| C | 12 |
| D | 13 |
| E | 14 |
| F | 15 |
たとえば、16進数のFは10進数の15を表します。
また、16進数の1桁は、2進数の4ビットに対応します。
この「16進数1桁=2進数4ビット」という関係は、試験でもよく使います。
基数変換の解き方
ここでは、基数変換の基本的な解き方を確認します。
試験では、複雑な公式を覚えるよりも、次の変換手順を確実に使えることが大切です。
- 10進数を2進数に変換する
- 2進数を10進数に変換する
- 2進数と16進数を相互に変換する
10進数を2進数に変換する方法
10進数を2進数に変換するときは、2で割って余りを下から読む方法が基本です。
例として、10進数の13を2進数に変換します。
13 ÷ 2 = 6 余り 1
6 ÷ 2 = 3 余り 0
3 ÷ 2 = 1 余り 1
1 ÷ 2 = 0 余り 1
余りを下から読むと、1101になります。
したがって、次のように表せます。
13(10進数)= 1101(2進数)
ポイントは、最後に余りを下から読むことです。
上から読んでしまうと答えが逆になるため注意しましょう。
2進数を10進数に変換する方法
2進数を10進数に変換するときは、各桁に対応する2の累乗を足し合わせます。
例として、1101(2進数)を10進数に変換します。
2進数の各桁は、右から順に次の重みを持ちます。
- 右端:2の0乗
- その左:2の1乗
- その左:2の2乗
- その左:2の3乗
1101の場合は、次のように計算します。
1 × 2の3乗 = 8
1 × 2の2乗 = 4
0 × 2の1乗 = 0
1 × 2の0乗 = 1
合計は、
8 + 4 + 0 + 1 = 13
したがって、
1101(2進数)= 13(10進数)
となります。
2進数と16進数を変換する方法
2進数と16進数の変換は、慣れるまでは難しく見えるかもしれません。
しかし、ポイントはとてもシンプルです。
2進数を4桁ずつ区切る
これだけです。
なぜ4桁ずつ区切るかというと、16進数の1桁は、2進数の4桁分に対応しているからです。
たとえば、2進数4桁で表せる最大の数は次のとおりです。
1111(2進数)= 15(10進数)
16進数では、15をFで表します。
つまり、2進数の4桁は、16進数の1桁で表せる範囲にちょうど収まります。
2進数から16進数に変換する手順
2進数を16進数に変換するときは、次の手順で考えます。
- 2進数を右から4桁ずつ区切る
- 区切った4桁を、それぞれ16進数に変換する
- 変換した16進数を左から並べる
例として、次の2進数を16進数に変換してみます。
11011010(2進数)
まず、右から4桁ずつ区切ります。
1101 1010
次に、それぞれを16進数に直します。
| 2進数 | 16進数 |
|---|---|
| 1101 | D |
| 1010 | A |
したがって、
11011010(2進数)= DA(16進数)
となります。
ここで大切なのは、右から4桁ずつ区切ることです。
左から何となく区切ると、桁がずれてしまうことがあります。
4桁に足りないときは0を足す
2進数の桁数が4の倍数ではない場合もあります。
たとえば、次の2進数を考えます。
10110(2進数)
このままだと、右から4桁で区切ると次のようになります。
1 0110
左側が1桁だけになってしまいました。
このような場合は、左側に0を足して4桁にそろえます。
0001 0110
それぞれを16進数に直すと、次のようになります。
| 2進数 | 16進数 |
|---|---|
| 0001 | 1 |
| 0110 | 6 |
したがって、
10110(2進数)= 16(16進数)
となります。
ここでの「16」は、10進数の16ではなく、16進数の16です。
まぎらわしい場合は、16(16進数)のように書くと分かりやすくなります。
16進数から2進数に変換する手順
16進数から2進数に変換するときは、逆のことをします。
手順は次のとおりです。
- 16進数を1桁ずつ見る
- それぞれを4桁の2進数に直す
- 左からつなげる
例として、3F(16進数)を2進数に変換します。
まず、1桁ずつ分けます。
3 F
次に、それぞれを4桁の2進数に直します。
| 16進数 | 2進数 |
|---|---|
| 3 | 0011 |
| F | 1111 |
これをつなげると、
3F(16進数)= 00111111(2進数)
となります。
先頭の0は省略できる場合もありますが、問題で「8ビットで表せ」と指定されている場合は、00111111のように8桁のまま書きます。
最低限覚えたい対応表
2進数と16進数の変換では、次の対応を覚えておくと便利です。
| 2進数 | 16進数 |
|---|---|
| 0000 | 0 |
| 0001 | 1 |
| 0010 | 2 |
| 0011 | 3 |
| 0100 | 4 |
| 0101 | 5 |
| 0110 | 6 |
| 0111 | 7 |
| 1000 | 8 |
| 1001 | 9 |
| 1010 | A |
| 1011 | B |
| 1100 | C |
| 1101 | D |
| 1110 | E |
| 1111 | F |
最初からすべて暗記しようとしなくても大丈夫です。
まずは、2進数4桁を1セットにするという考え方を覚えましょう。
変換のコツ
2進数と16進数の変換では、次の3つを意識するとミスが減ります。
- 2進数は右から4桁ずつ区切る
- 4桁に足りない場合は左に0を足す
- 16進数1桁は、必ず2進数4桁に直す
特に試験では、急いでいると区切る位置を間違えやすいです。
まず4桁ごとに線を引くようにしてから変換すると、落ち着いて解けます。
補数表現とは?負の数を2進数で表す仕組み
補数表現とは、コンピュータ上で負の数を表すための方法です。
2進数は基本的に0と1だけで数を表します。
しかし、正の数だけでなく、負の数も扱う必要があります。
そこで使われる代表的な方法が、2の補数表現です。
2の補数とは何か
2の補数は、負の数を表すためによく使われる表現方法です。
試験では、特にこの2の補数が重要です。
2の補数を使うと、コンピュータは引き算を足し算として扱いやすくなります。
そのため、情報処理やコンピュータの基礎分野でよく登場します。
2の補数の作り方
2の補数は、次の手順で求めます。
- ビットをすべて反転する
- 1を足す
例として、8ビットで10の2の補数を考えます。
まず、10進数の10を8ビットの2進数にします。
00001010
次に、ビットをすべて反転します。
11110101
最後に、1を足します。
11110101 + 1 = 11110110
したがって、8ビットの2の補数表現では、-10は次のように表されます。
11110110
つまり、2の補数は「反転して1を足す」と覚えると分かりやすいです。
補数表現でよくある計算ミス
補数表現では、次のようなミスに注意が必要です。
- ビット数をそろえずに計算する
- ビット反転だけで終わってしまう
- 最後に1を足し忘れる
- 正の数と負の数の判定を間違える
- 桁あふれをどう扱うか確認していない
特に大切なのは、何ビットで表すかです。
たとえば、同じ10でも、4ビットで考えるのか、8ビットで考えるのかによって表現が変わります。
問題文に「8ビットで表す」「4ビットで表す」といった条件がある場合は、必ず先に確認しましょう。
浮動小数点数とは?符号部・指数部・仮数部を理解する
浮動小数点数とは、小数をコンピュータで扱うための表現方法です。
たとえば、6.5や0.125のような小数を、2進数で効率よく表すために使われます。
浮動小数点数は、一般に次の3つの部分で構成されます。
- 符号部
- 指数部
- 仮数部
単精度浮動小数点数では、IEEE 754形式がよく知られています。
一般的な単精度浮動小数点数では、32ビットを次のように分けます。
- 符号部:1ビット
- 指数部:8ビット
- 仮数部:23ビット
つまり、全体は次のような構成です。
符号部|指数部|仮数部
符号部とは
符号部は、その数が正か負かを表します。
一般的には、次のように考えます。
- 正の数:0
- 負の数:1
たとえば、6.5は正の数なので符号部は0です。
一方、-6.5は負の数なので符号部は1です。
指数部とは
指数部は、小数点の位置を表す部分です。
浮動小数点数では、数を次のような形に直して考えます。
1.xxxx × 2のn乗
このnにあたる部分が指数です。
ただし、指数部にはnをそのまま入れるのではなく、バイアスと呼ばれる値を足して保存することが多いです。
一般的な単精度浮動小数点数では、バイアス値は127です。
たとえば、指数が2の場合は、
127 + 2 = 129
となります。
この129を2進数に変換して、指数部に入れます。
129(10進数)= 10000001(2進数)
したがって、指数部は10000001になります。
仮数部とは
仮数部は、数の有効数字にあたる部分です。
浮動小数点数では、数を次の形に正規化します。
1.xxxx × 2のn乗
このとき、先頭の1は省略されることが多く、小数点以下の部分だけを仮数部に入れます。
たとえば、
1.101 × 2の2乗
であれば、仮数部に入れるのは小数点以下の101です。
単精度浮動小数点数では仮数部が23ビットなので、足りない部分は0で埋めます。
この場合、仮数部は次のようになります。
10100000000000000000000
正規化とは何か
正規化とは、2進数を次の形にそろえることです。
1.xxxx × 2のn乗
たとえば、2進数の110.1は、次のように正規化できます。
110.1 = 1.101 × 2の2乗
小数点を左に2つ動かしたので、指数は2になります。
浮動小数点数の問題では、この正規化がとても重要です。
正規化ができれば、指数部と仮数部をかなり求めやすくなります。
例題:-6.5を単精度浮動小数点数で表す手順
ここでは、例として-6.5を単精度浮動小数点数で表す手順を確認します。
単精度浮動小数点数は、一般的に次の構成です。
- 符号部:1ビット
- 指数部:8ビット
- 仮数部:23ビット
全体の形は次のようになります。
符号部|指数部|仮数部
手順1:10進数を2進数に変換する
まず、絶対値である6.5を2進数に変換します。
6は、2進数で次のように表せます。
6 = 110(2進数)
また、0.5は2進数で次のように表せます。
0.5 = 0.1(2進数)
したがって、
6.5 = 110.1(2進数)
となります。
手順2:正規化する
次に、110.1(2進数)を正規化します。
正規化では、次の形にします。
1.xxxx × 2のn乗
110.1は、小数点を左に2つ動かすと1.101になります。
110.1 = 1.101 × 2の2乗
したがって、指数は2です。
手順3:符号ビットを決める
今回の数は-6.5で、負の数です。
そのため、符号ビットは次のようになります。
符号ビット = 1
正の数なら0、負の数なら1と考えましょう。
手順4:指数部を求める
指数は、正規化した結果から2だと分かりました。
単精度浮動小数点数では、一般的にバイアス値として127を使います。
したがって、指数部に入れる値は次のようになります。
127 + 2 = 129
次に、129を2進数に変換します。
129(10進数)= 10000001(2進数)
よって、指数部は次のようになります。
指数部 = 10000001
手順5:仮数部を求める
正規化した形は、次のとおりです。
1.101 × 2の2乗
仮数部に入れるのは、1.101の小数点以下の部分です。
小数点以下は101です。
単精度浮動小数点数の仮数部は23ビットなので、残りは0で埋めます。
仮数部 = 10100000000000000000000
最終結果
ここまでの結果をまとめます。
- 符号部:1
- 指数部:10000001
- 仮数部:10100000000000000000000
したがって、-6.5の単精度浮動小数点数表現は、次のようになります。
1|10000001|10100000000000000000000
区切りを外すと、次のようになります。
11000000110100000000000000000000
浮動小数点数の問題は、問題文が長く見えるため難問に感じやすいですが、手順自体は比較的シンプルです。
流れを整理すると、次のとおりです。
- 2進数に変換する
- 正規化する
- 符号部を決める
- 指数部を求める
- 仮数部を入れる
この流れを覚えておくと、試験でも落ち着いて対応しやすくなります。
技術士第一次試験で得点するためのコツ
基数変換・補数表現・浮動小数点数は、手順を覚えることで得点につなげやすい分野です。
ここでは、試験で解くときに意識したいポイントを整理します。
問題文で確認すべきポイント
まず、問題文の条件を丁寧に確認しましょう。
特に浮動小数点数では、形式が問題によって異なる場合があります。
確認すべきポイントは、次のとおりです。
- 何ビットで表すのか
- 符号部は何ビットか
- 指数部は何ビットか
- 仮数部は何ビットか
- バイアス値はいくつか
- 正規化の方法は指定されているか
- 桁あふれをどう扱うか
一般的な単精度浮動小数点数では、符号部1ビット、指数部8ビット、仮数部23ビット、バイアス127がよく使われます。
ただし、試験では独自の形式が指定されることもあるため、必ず問題文を優先しましょう。
計算ミスを減らすチェック方法
計算ミスを減らすには、途中式を省略しすぎないことが大切です。
特に、次の点に注意しましょう。
- 10進数から2進数に変換した結果を確認する
- 2進数から10進数に戻して検算する
- 16進数は4ビット単位で区切る
- 補数表現ではビット数をそろえる
- 2の補数では「反転して1を足す」を忘れない
- 浮動小数点数では仮数部の0埋めを忘れない
- 符号ビットを最後にもう一度確認する
浮動小数点数では、特に次の3点でミスが起きやすいです。
- 正規化したときの指数を間違える
- バイアスを足した後の指数部を間違える
- 仮数部に先頭の1を入れてしまう
正規化後の1.xxxxの先頭の1は、一般的な形式では仮数部に入れません。
仮数部には、小数点以下の部分だけを入れる点に注意しましょう。
基数変換を得点源にする勉強順
初心者の方は、次の順番で学ぶと理解しやすいです。
- 2進数と10進数の変換
- 2進数と16進数の変換
- 2の補数
- 小数の2進数変換
- 浮動小数点数
いきなり浮動小数点数から学ぶと難しく感じやすいですが、基数変換が理解できているとかなり楽になります。
まずは整数の2進数変換に慣れ、その後に小数や補数表現へ進むのがおすすめです。
FAQ
基数変換は何から勉強すればいいですか?
基数変換は、まず10進数と2進数の変換から勉強するのがおすすめです。
具体的には、10進数を2で割って余りを下から読む方法と、2進数の各桁を2の累乗として足し合わせる方法を練習しましょう。
その後、2進数と16進数の変換に進むと理解しやすくなります。
16進数は、2進数を4ビットごとに区切って変換するのが基本です。
2の補数はどうやって求めますか?
2の補数は、次の手順で求めます。
- 対象の2進数のビットをすべて反転する
- 最後に1を足す
たとえば、8ビットで00001010の2の補数を求める場合、まずビットを反転して11110101にします。
そこに1を足すと、11110110になります。
このように、2の補数では「反転して1を足す」と覚えておくと便利です。
浮動小数点数の問題はどの順番で解けばいいですか?
浮動小数点数の問題は、次の順番で解くと整理しやすいです。
- 10進数を2進数に変換する
- 1.xxxx × 2のn乗の形に正規化する
- 符号ビットを決める
- 指数にバイアスを足して指数部を求める
- 正規化後の小数部分を仮数部に入れる
問題文が長くても、この流れに分解すれば対応しやすくなります。
単精度浮動小数点数のバイアス値はいくつですか?
一般的なIEEE 754の単精度浮動小数点数では、指数部のバイアス値は127です。
ただし、試験問題では独自の形式が指定される場合もあります。
たとえば、指数部のビット数やバイアス値が通常と異なることがあります。
そのため、必ず問題文で指定された条件を確認しましょう。
仮数部には正規化後の先頭の1を入れますか?
一般的な単精度浮動小数点数では、正規化後の1.xxxxの先頭の1は仮数部に入れません。
仮数部に入れるのは、小数点以下の部分です。
たとえば、
1.101 × 2の2乗
であれば、仮数部に入れるのは101です。
残りのビットは0で埋めます。
技術士第一次試験で基数変換は出題されますか?
技術士第一次試験の情報系分野では、基数変換、補数表現、浮動小数点数に関する考え方が問われることがあります。
過去問でも、2進数・16進数・10進数の変換や、負数表現、浮動小数点数に関連するテーマが出題されています。
計算手順を理解しておくと、見た目が難しい問題でも得点につなげやすくなります。
まとめ
基数変換・補数表現・浮動小数点数は、情報系分野の基礎として重要なテーマです。
最初は専門用語が多く、難しく感じるかもしれません。
しかし、ひとつずつ手順を分けて考えると、決して特別な計算ではありません。
基数変換では、まず2進数・10進数・16進数の関係を理解することが大切です。
特に、2進数と16進数の変換では、2進数4桁が16進数1桁に対応するという考え方を押さえておきましょう。
補数表現では、負の数を2進数で表す方法として、2の補数がよく使われます。
2の補数は、基本的に「ビットを反転して1を足す」と覚えると分かりやすいです。
浮動小数点数では、数を2進数に変換し、正規化してから、符号部・指数部・仮数部に分けて考えます。
問題文が長く見えても、手順に沿って整理すれば対応しやすくなります。
試験対策としては、次の流れで学習するのがおすすめです。
- 2進数と10進数の変換に慣れる
- 2進数と16進数の変換を覚える
- 2の補数の作り方を理解する
- 小数を2進数に変換する練習をする
- 浮動小数点数を手順どおりに解く
基数変換・補数表現・浮動小数点数は、慣れるまでは難しく見えます。
しかし、基本パターンを覚えれば得点源にしやすい分野です。
まずは簡単な例題から繰り返し練習し、計算手順を確実に身につけていきましょう。


コメント