2進数の小数表現を理解しよう!

2進数の小数表現を理解しよう!

※ 当サイトは広告を含みます。

ここでは小数点を含む数値を2進数で表現する方法を学びましょう。
小数点以外はこちらの記事で解説してるので、不明な方はどうぞ。

小数を含む2進数を10進数に変換する方法

そもそも小数とは何でしょうか。まずは10進数で考えてみましょう。

管理人

0.25ってどんな数字? 桁の概念を使って考えてみよう。

りさ

(1 x 0) + (0.1 x 2) + (0.01 x 5)です。

管理人

その通り。0以下の桁はマイナスの乗数を使うんだ。2進数も同じだよ。

2進数から10進数に変換する方法

小数を含む10進数を2進数に変換する方法

負数のべき乗を見て分かったと思いますが、とても暗算できるレベルじゃないです。
なので小数に対応した筆算っぽい方法を使って2進数に変換します。

また、その時に整数部分と小数部分は分離して考えることができます。
整数部分はすでに解説済みなので問題ないですよね。

小数部分は1になるまで2倍を繰り返し、桁上りするたびに整数部を0に戻します。
その時に桁上りした場合は1、桁上りしていない場合を0として、結果を繋ぐと小数部分の2進数になります。

りさ

難しいです。

管理人

ちゃんと説明を用意してるよ。これを見てみよう。

10進数から2進数に変換する方法

コンピュータは小数点の表現が苦手

実は先程の例では2進数で表現可能な数値を使って説明しました。
そもそもコンピュータは小数点の扱いが非常に苦手で、場合によっては数値がズレます。

これは説明画像の中でも触れましたが、小数点以下が無限に続くことが原因です。
また、仮に無限に続かなくても、桁数が多すぎて表現可能な範囲を超えることがあります。

これに対する根本的な解決策はありません。理由はデジタルが、つまりはコンピュータが無限を表現できないからです。
つまりは誤差を想定するか、誤差が出ても結果に影響しないような処理で利用するべきということです。

りさ

コンピュータは何でも万能にできるわけじゃないんですね。

管理人

人にもコンピュータにも得意不得意はあるんだよ。

POINTコンピュータで小数点を含む計算を行う場合、誤差を想定して利用しないといけない。
また、桁数が膨大な場合など、数値を打ち切ることで発生する誤差を丸め誤差と呼ぶ。

あとがき

管理人

Windowのプログラマー電卓だと小数点が使えないからWebのツールを使うといいよ。

りさ

何で小数点に対応してないんですか?

管理人

Microsoftに聞いてくれ。

◆ コンピュータサイエンスに関する学習コンテンツ

この記事は参考になりましたか?

関連記事

コメント

この記事へのコメントはありません。