人工知性を作りたい

私が日々、挑戦したことや学んだことなどを紹介していく雑記ブログです。 (新しいAI技術HTM, 専門の音声信号処理, 趣味のアニメ等も書いてます。)

固定小数点と浮動小数点!【基本情報技術者になろう!】

f:id:hiro-htm877:20190619230445j:plain



 

f:id:hiro-htm877:20190601202549p:plain

 

 

 

  

 

 

基本情報技術者を目指す皆様へ】

・今回は2進数の固定小数点と浮動小数点について教えます!

・実際にPythonで計算を行い、疑問の解決につなげます。

 

本記事のテーマ

基本情報技術者になろう!】

・固定小数点と浮動小数

説明

コンピュータの数を表す方法は2つあります。

1. 固定小数点

2. 浮動小数点 

 

コンピュータの中では、固定小数点で整数を表し、浮動小数で実数(少数を含む数)を表します。

 

1. 固定小数点

固定小数点はビット列の「どの位置に小数点があるか」が決まっている表現です。

f:id:hiro-htm877:20190621215345j:plain

8ビットの固定小数点で表せる範囲はこのようになります。

f:id:hiro-htm877:20190621215404j:plain

浮動小数

浮動小数点は次の指数表記を用いて数値を扱う表現方法です。

f:id:hiro-htm877:20190621222706j:plain

コンピュータで扱うのは2進数なので、こうなります。

f:id:hiro-htm877:20190621222727j:plain

これで小数点の位置を覚えておく必要がなくなります。

コンピュータは浮動小数点として、残りの可変部分(符号、仮数、指数)の値をビットに割り当てて、数を表現します。

 

32ビット形式

S: 仮数部の符号(0:正、1:負)

E: 指数部(2を奇数とし、負の数は2の補数で表現)

M: 仮数部(2進数 絶対値表示)

S(1ビット)、E(7ビット)、M(24ビット)

 

例を用いて説明します。

例:0.1875

①まずは0.1875を2進数に直す。

②算出した2進数を0.M形式に正規化する。

f:id:hiro-htm877:20190621224114j:plain

 

 

③正規化した数から、符号(S)と仮数(M)、指数(E)を抜き出す

④最後に指定された形式通りに値をはめ込むと出来上がり

f:id:hiro-htm877:20190621224457j:plain

 

 

IEEE754の形式例

ここでは、IEEE(米国電子電気技術者協会)により企画化された、IEEE754という浮動小数点数の形式を32ビットで紹介します。

先ほどの32ビットとは、ビット数の内訳や指数部の表し方、正規化の方法が異なります。

 

S: 仮数部の符号(0:正、1:負)

E: 指数部(2を奇数として+127する バイアス127)

M: 仮数部(仮数−1の2進数小数で表す 1.xxxx1の小数部)

S(1ビット)、E(8ビット)、M(23ビット)

 

実際に計算していきます。

①0.1875を2進数にすると0.0011。これを1.Mの形に正規化します。

②正規化した数から、符号(S)と仮数(M)、指数(E)の値を抜き出す。

f:id:hiro-htm877:20190621230816j:plain

③最後に、指定された形式通り書く値をはめ込むと出来上がり

f:id:hiro-htm877:20190621230908j:plain

 

以上で固定小数点と浮動小数点の説明は終了です!

特に浮動小数点は表現方法が複数ありますので一つ一つ覚えましょう!

 

 

参考資料

・キタミ式イラストIT塾 基本情報技術者 平成31/01年