導入
試験勉強でまじめに参考書なんかと向き合う事が苦手な人。
結構いると思いますが皆さん如何でしょうか?
僕は超苦手です!
という訳で出来ないことをやり続けるのはあほくさいと思ったので、
自分なりに分かりやすくまとめていこうと思います。
同じ悩みで困っている人がいたらその人にも伝わると良いなと思います。
浮動小数点
え?ここから?
と思った人。申し訳ないですがここからです。
自分は参考書を読んでいてこのあたりで、文章が多くてきつかったです。
なのでまずは浮動小数点を自分なりにまとめてみたいと思います。
前提
そもそも浮動小数点とは実数(小数点のついた数字)を扱うために使用される形式です
単精度浮動小数点
ではよく使われている単精度といわれる表現のされ方を確認してみます。
全体で32bit使用して数値を表現しますが、内訳はこちら↓
符号部 | 指数部 | 仮数部 |
---|---|---|
1bit | 8bit | 23bit |
要するに左から1桁、8桁、23桁で用途が違うという事ですね。
なんて分かりずらいんだ
ではどのような用途か確認してみましょう
符号部
- 0と1で正の数が負の数を指定できます。マイナスの場合は1を設定します。
指数部
- 後で補足をしますがこの数字を使うことで、小数点の位置を調整します。
- 使いたい値に+127するらしい。
仮数部
- 実際に表示したい数値の素が入っている。
- 実は-1された値が入っているので、使用するときは1足さないといけない(暗黙の1と呼ばれたりするらしい)
- これをいろいろして最終的に表示する数値になります。
実際に数値にするにはどうするの?
ハイ、問題はここですよね。
色々あるのはわかったけどどうすれば良いの?
結論から言うと
(2の指数部乗)× (仮数部+1)
上記に符号部のマイナスかプラスを付ける事になります。
what??? ってなりましたか?僕はなりました。
文字だとやっぱりわかりづらいですね。
なのでここは2進数から10進数では無く、10進数から2進数にするイメージで確認してみましょう。
10進数から2進数にすることでイメージできる浮動小数点
では仮に10.075という値を浮動小数点にするとします。
①まず2進数にしてみます。
1010.11になります(あってる?)
②使用したい数値を1.xxxxの形にします。
これは暗黙の1とか言われていて統一することで、いろいろメリットがあるらしい。
という訳で形を変えたものがこちら↓
1.01011 × 2^3
なんとなくパーツで別れてきました°˖✧◝(⁰▿⁰)◜✧˖°
ではここから各部に当てはめていきましょう
符号部:一番簡単、正の数なのでここは0でいいですね。
指数部
- ここには、何乗することで仮数部を元の数に戻せるか?という値が入ります。
- よってまずは、2 ^ 3から3を取り出します。
- その後お約束として、3に127を足します(バイアスというらしいですね)
- 結果130になったので2進数に直して代入します。
仮数部:ここも簡単1.01011から「1.」この部分を外して入れるだけ
後は足りない桁をゼロで補うと、
符号部 | 指数部 | 仮数部 |
---|---|---|
0 | 10000010 | 01011000000000000000000 |
という様になります!!
なんとなく10進数から2進数に直した方が、普段使っている数字が変わっていく様子が想像できて分かりやすいのではないでしょうか?
2進数から10進数に直したい時は逆の手順で進めて行けば良さそうですね。
余談
自分が分かりづらかった箇所をまとめてみましたが、皆さんは分かり易かったでしょうか?
(わかりづらい!という方は申し訳ないです。)
ご指摘やアドバイスがあれば対応したいと思います!
ではまた次の記事でお会いしましょう。(@^^)/~~~