KATUBLO | エンジニアの日常BLOG

プログラミング、数学、旅行などを中心に役立つ情報をお届け

2019年01月27日

【アセンブラ言語】固定少数点と浮動少数点についてわかりやすく解説

こんにちは。KATUOです。今回の記事では固定少数点と浮動少数点の違について書いていこうと思います。

 

アセンブリ言語 固定少数点とは?

一般的に少数を表記するときと全く同じ書き方。例えば4.2、5.88とか少数部分は.の右側として表記する。これを2進数表記の時も同じように扱うことができて、1001.0011 といったように少数点を使って表記する書き方。

 

アセンブリ言語 浮動少数点とは?

一方浮動少数点というのは、固定少数点で書くと、0.000000000101 といったように長くなる数値を

 

[math]1.01 ×2^{-10}[/math]

 

といったようにコンパクトに表現する方法である。またこの1.01の部分を仮数、2の部分を基数、-10の部分を指数 と呼ぶ。

 

少数を含む10進数を2進数に変換する

10進数で表記された少数を含む値

118.4459

 

を2進数に変換すると

 

1110110.01110010001001101000000010011101010010010101

 

となる。だが実際にこの数字の少数点部分は途中で打ち切られたものであるので、厳密には正しくはない。この変換はどのようにして行なったかわからない人もいるので、わかりやすく説明している記事のリンクを貼っておきました。

 

 

 

単精度浮動少数点32bit

浮動少数点を32bitで表現しようとするとき、中の内訳はどのようになっているだろうか?

 

単精度浮動少数点32bitはC言語のfloat型に対応する。

 

[内訳]

 

符号:1bit

指数:8bit

仮数:23bit

 

倍精度浮動少数点64bit

倍精度浮動少数点64bitはC言語のdouble型に対応する。

 

[内訳]

 

符号:1bit

指数:11bit

仮数:20bit + 32bit

 

 

固定小数点10.1(2)を浮動少数点表記でbitに記録する

 

固定少数点10.1(2)を浮動少数点表記として32bitに記録する。

浮動少数点に変換すると

 

[math] 10.1 = + 0.101 × 2^2 [/math]

 

となる。

 

符号部

正なら0、負なら1を格納する。10.1は正なので、0を格納

 

指数部

嵩上げ表現といって-128を0000000として表記する。今回は2であるため128+2として2進数で表記する。

 

10000010を格納

 

仮数部

仮数部は少数点の部分を上からbitにそのまま格納すればいいので

 

1010000000000000を格納

 

整理すると10.1(2)を浮動少数点で32bitで保存したとき

 

符号部:0

指数:10000010

仮数部:1010000000000000

 

となった。

 

 

アセンブラ言語を学ぶ上でおすすめの参考書

ARMで学ぶ アセンブリ言語入門

 

↑良さげな参考書。実際、大学の授業やネットで調べるよりも参考書でじっくり勉強した方が身につくと思います。将来有望な情報工学を学ぶ学生は基礎力を学生のうちに身に付けるのが大切であると思うので、リンク先の参考書を一目通して置くと良いかもしれません。

最後まで読んで頂き、ありがとうございました。
SNS等でのシェアが頂ければ幸いです!

プロフィール

@KATUO

現在都内私立大学に通う大学4年生。大学では電気電子工学を専攻。大学2年の夏頃に、プログラマーの長期インターン募集の広告が目に止まり、独学でプログラミングの学習を開始。現在は「ToC向け大規模サービスを運営するメガベンチャー」と「AIスタートアップ」でインターンで修行中。2020年4月からwebエンジニアとして社会人生活スタート。

広告

特集記事