基数変換・補数表現・浮動小数点数の解き方|技術士一次試験対策

基数変換・補数表現・浮動小数点数の解き方を初心者向けに解説するアイキャッチ画像 資格
基数変換・補数表現・浮動小数点数の解き方

導入

技術士第一次試験の情報系分野では、基数変換・補数表現・浮動小数点数が頻出テーマとして出題されます。

特に、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〜F2進数を短く表すときに便利

16進数では、10以上の数をアルファベットで表します。

16進数10進数
A10
B11
C12
D13
E14
F15

たとえば、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進数に変換するときは、次の手順で考えます。

  1. 2進数を右から4桁ずつ区切る
  2. 区切った4桁を、それぞれ16進数に変換する
  3. 変換した16進数を左から並べる

例として、次の2進数を16進数に変換してみます。

11011010(2進数)

まず、右から4桁ずつ区切ります。

1101 1010

次に、それぞれを16進数に直します。

2進数16進数
1101D
1010A

したがって、

11011010(2進数)= DA(16進数)

となります。

ここで大切なのは、右から4桁ずつ区切ることです。
左から何となく区切ると、桁がずれてしまうことがあります。

4桁に足りないときは0を足す

2進数の桁数が4の倍数ではない場合もあります。

たとえば、次の2進数を考えます。

10110(2進数)

このままだと、右から4桁で区切ると次のようになります。

1 0110

左側が1桁だけになってしまいました。

このような場合は、左側に0を足して4桁にそろえます。

0001 0110

それぞれを16進数に直すと、次のようになります。

2進数16進数
00011
01106

したがって、

10110(2進数)= 16(16進数)

となります。

ここでの「16」は、10進数の16ではなく、16進数の16です。
まぎらわしい場合は、16(16進数)のように書くと分かりやすくなります。

16進数から2進数に変換する手順

16進数から2進数に変換するときは、逆のことをします。

手順は次のとおりです。

  1. 16進数を1桁ずつ見る
  2. それぞれを4桁の2進数に直す
  3. 左からつなげる

例として、3F(16進数)を2進数に変換します。

まず、1桁ずつ分けます。

3 F

次に、それぞれを4桁の2進数に直します。

16進数2進数
30011
F1111

これをつなげると、

3F(16進数)= 00111111(2進数)

となります。

先頭の0は省略できる場合もありますが、問題で「8ビットで表せ」と指定されている場合は、00111111のように8桁のまま書きます。

最低限覚えたい対応表

2進数と16進数の変換では、次の対応を覚えておくと便利です。

2進数16進数
00000
00011
00102
00113
01004
01015
01106
01117
10008
10019
1010A
1011B
1100C
1101D
1110E
1111F

最初からすべて暗記しようとしなくても大丈夫です。
まずは、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. ビットをすべて反転する
  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

浮動小数点数の問題は、問題文が長く見えるため難問に感じやすいですが、手順自体は比較的シンプルです。

流れを整理すると、次のとおりです。

  1. 2進数に変換する
  2. 正規化する
  3. 符号部を決める
  4. 指数部を求める
  5. 仮数部を入れる

この流れを覚えておくと、試験でも落ち着いて対応しやすくなります。

技術士第一次試験で得点するためのコツ

基数変換・補数表現・浮動小数点数は、手順を覚えることで得点につなげやすい分野です。

ここでは、試験で解くときに意識したいポイントを整理します。

問題文で確認すべきポイント

まず、問題文の条件を丁寧に確認しましょう。

特に浮動小数点数では、形式が問題によって異なる場合があります。

確認すべきポイントは、次のとおりです。

  • 何ビットで表すのか
  • 符号部は何ビットか
  • 指数部は何ビットか
  • 仮数部は何ビットか
  • バイアス値はいくつか
  • 正規化の方法は指定されているか
  • 桁あふれをどう扱うか

一般的な単精度浮動小数点数では、符号部1ビット、指数部8ビット、仮数部23ビット、バイアス127がよく使われます。

ただし、試験では独自の形式が指定されることもあるため、必ず問題文を優先しましょう。

計算ミスを減らすチェック方法

計算ミスを減らすには、途中式を省略しすぎないことが大切です。

特に、次の点に注意しましょう。

  • 10進数から2進数に変換した結果を確認する
  • 2進数から10進数に戻して検算する
  • 16進数は4ビット単位で区切る
  • 補数表現ではビット数をそろえる
  • 2の補数では「反転して1を足す」を忘れない
  • 浮動小数点数では仮数部の0埋めを忘れない
  • 符号ビットを最後にもう一度確認する

浮動小数点数では、特に次の3点でミスが起きやすいです。

  1. 正規化したときの指数を間違える
  2. バイアスを足した後の指数部を間違える
  3. 仮数部に先頭の1を入れてしまう

正規化後の1.xxxxの先頭の1は、一般的な形式では仮数部に入れません。
仮数部には、小数点以下の部分だけを入れる点に注意しましょう。

基数変換を得点源にする勉強順

初心者の方は、次の順番で学ぶと理解しやすいです。

  1. 2進数と10進数の変換
  2. 2進数と16進数の変換
  3. 2の補数
  4. 小数の2進数変換
  5. 浮動小数点数

いきなり浮動小数点数から学ぶと難しく感じやすいですが、基数変換が理解できているとかなり楽になります。

まずは整数の2進数変換に慣れ、その後に小数や補数表現へ進むのがおすすめです。

FAQ

基数変換は何から勉強すればいいですか?

基数変換は、まず10進数と2進数の変換から勉強するのがおすすめです。

具体的には、10進数を2で割って余りを下から読む方法と、2進数の各桁を2の累乗として足し合わせる方法を練習しましょう。

その後、2進数と16進数の変換に進むと理解しやすくなります。
16進数は、2進数を4ビットごとに区切って変換するのが基本です。

2の補数はどうやって求めますか?

2の補数は、次の手順で求めます。

  1. 対象の2進数のビットをすべて反転する
  2. 最後に1を足す

たとえば、8ビットで00001010の2の補数を求める場合、まずビットを反転して11110101にします。
そこに1を足すと、11110110になります。

このように、2の補数では「反転して1を足す」と覚えておくと便利です。

浮動小数点数の問題はどの順番で解けばいいですか?

浮動小数点数の問題は、次の順番で解くと整理しやすいです。

  1. 10進数を2進数に変換する
  2. 1.xxxx × 2のn乗の形に正規化する
  3. 符号ビットを決める
  4. 指数にバイアスを足して指数部を求める
  5. 正規化後の小数部分を仮数部に入れる

問題文が長くても、この流れに分解すれば対応しやすくなります。

単精度浮動小数点数のバイアス値はいくつですか?

一般的な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進数に変換する練習をする
  • 浮動小数点数を手順どおりに解く

基数変換・補数表現・浮動小数点数は、慣れるまでは難しく見えます。
しかし、基本パターンを覚えれば得点源にしやすい分野です。

まずは簡単な例題から繰り返し練習し、計算手順を確実に身につけていきましょう。

コメント

タイトルとURLをコピーしました