様々な学問/勉強課目をシミュレーションで解説!シミュレーター/ツール/ゲームで、いろんな学問を楽しく分かりやすく解説するサイトです!思考の改善や、効率化の話題も!
⇒ 本ブログの詳細/連絡先はコチラ!
学問系TOP AI/ChatGPT 数学 物理 統計学 コンピューター 経済学 Webツール
  1. ホーム
  2. 〇学問シミュレーター/改善・効率化
  3. 情報科学/コンピューター
  4. データ型
  5. 「固定小数点」をシミュレーションで解説![コンピューターの原理基礎]
■注目記事一覧

高校数学 教科書用シミュレーターの制作に携わりました!!

本サイトの「サイコロ シミュレーター」が熊本の特別教育テレビ授業で使われました!

マルチタスクのCPUの動きをシミュレーターで見てみよう!

コンピューターの半理基礎:半加算器の原理をシミュレーターで理解しよう!

ストレージのRAID5構成をシミュレーターで理解しよう!

浮動小数点型の仕組みをシミュレーターで理解しよう!

ページングをシミュレーターで体感しよう!
 
全テーマ共通記事一覧

「固定小数点」をシミュレーションで解説![コンピューターの原理基礎]

$$\newcommand\CB[1]{\textcolor{blue}{#1}} \newcommand\CR[1]{\textcolor{red}{#1}} \newcommand\CG[1]{\textcolor{magenta}{#1}}$$

コンピューターは2進数の世界で動いています。2進数は1001101101みたいな感じで0と1の羅列となってます。

前回までコンピューター内での整数の表現(Int,Long)について説明しました。
今回はさらに細かい数を表すのに必要な「小数」の表現方法について説明します!

「固定小数点」をシミュレーションで解説![コンピューターの原理基礎]

おさらい:「2進数で整数を表現」

コンピューターは↓のように0 or 1が入る箱(bit)を組み合わせて、それによって数値表現をします。

↓は1バイト(8bit)で、数値としては0~255の256パターンを表現できます!

固定小数点:一番簡単な小数の表現方法

↑のままだと、コンピューターは整数しか表現できません。

そこで、「どこかのbitの区切りに小数点をおくと決めて、それをベースで小数を表す」ことを考えます。

例えば、「右から1つ目のbitの位置に小数点を置く」と決めた例が↓です。本来ならば、00000111は10進数の7なのですが。この例だと3.5になります。なぜなら、小数点の位置が1つズレたため、2進数で「00000011.1」を表すことになるからです!

ところで、2進数上の「11.1」って、どのような数字なんでしょうか?

2進数の小数点の各桁は、\(2^{-1},2^{-2}…\)と評価されていく!

2進数上の小数点は↓の注釈があるとおり、\(2^{-1},2^{-2}…\)とマイナス指数で評価されていきます。

コチラの指数の説明ページでも解説していますが、桁が上がると指数は1つ上がるので、桁が下がると指数はマイナスになるんです。そしてマイナスの指数の評価は↓のように2の累乗の逆数になります。

1桁目: \(\large{2^{-1} = \frac{1}{2}}\)
2桁目: \(\large{2^{-2} = \frac{1}{4}}\)
3桁目: \(\large{2^{-3} = \frac{1}{8}}\)

このため、2進数の11.1は↓のような計算になり、10進数でいう3.5と評価できるんです!

2進数の11.1=
\(\large{2^1 + 2^0 + 2^{-1} = 3.5} \)

このように、固定小数点方式では「小数点を決まった位置にズラす」ことで小数を表現するんです!

「固定小数点」をシミュレーターで確認してみよう!

固定小数点でどのように小数が表現できるか、実際にシミュレーターで確認してみましょう!簡単のために1バイトでの固定小数点表現になります。

シミュレーターの説明
  • 指定した16進数を各bitに代入し、固定小数点で評価して10進数で出力します
  • 今回のシミュレーター上は「点の位置(何個左にズラすか)」を変えられるようになっています(実際の固定小数点は決め打ちであり、変えられません)
  • 点位置をマイナスにすると、点が右にズレていきます
  • 点がズレることで、各桁を2の何乗で評価するかがズレていくことを確認しましょう!

16進数
07

点位置
1

固定小数点シミュレーターの考察

点の位置を移動すれば、細かい小数も表現できる!

↑の例では、3.5と大きめの小数の値を例にしていましたが、↓のように点の位置を大きくずらすと、「0.2578125」といったように、細かい小数も表現可能になります!

固定小数点だと表現できる数の範囲が限られる!

↑の例もそうですが、小数点が固定だと表現できる数が限られます。↑の例だと整数部分が1bitしかなく、0 or 1しか表現できません!ほぼ整数を表すのは不可能になってしまうんです><

逆に、整数部分を多く取ろうと↓のようにすると、小数点以下は0.5のみしか表現できなくなります。これではまずいですよね。

この固定小数点の問題を回避するために、次回説明する「浮動小数点」を一般的には使用します

まとめ:「固定小数点 = 小数点を一定数ずらして、小数も表現可能にした方式」

今回説明したように、固定小数点方式はすごく簡単で、「小数点を一定数ずらして、小数も表現可能にした方式」です。例えば、4つずらすと決めて、それ以下のbitは2進数の小数として評価するように決めるんです。
 
2進数の小数は↓のように2の累乗の逆数で評価します。

1桁目: \(\large{2^{-1} = \frac{1}{2}}\)
2桁目: \(\large{2^{-2} = \frac{1}{4}}\)
3桁目: \(\large{2^{-3} = \frac{1}{8}}\)

ただ、上記のように、小数点のズラす位置を固定で決めるため「整数部分が足りない」「小数部分が足りない」といったことが起こります。
そのため次回記事で説明する浮動小数点方式が必要になるわけです!
 

まとめ

  • 「固定小数点 = 小数点を一定数ずらして、小数も表現可能にした方式」
  • 小数点部分は2の累乗の逆数として評価する

 

[関連記事] コンピューターでの小数の表し方
1.固定小数点(本記事)

 


⇒「データ型」カテゴリ記事一覧

その他関連カテゴリ




お気軽にコメントお願いします!

Your email address will not be published. Required fields are marked *




記事カテゴリ