プレフィックスを除去して桁数を揃えたい場合(8ビット幅)

プレフィックスを除去して桁数を揃えたい場合(8ビット幅)の全体像を詳しく解説してご紹介します。

整数変換をクリアした学習者が次に直面するのが、小数の二進数変換ルールです。整数では「2で割って余りを下から拾う」のに対し、小数は正反対の「2を掛けて整数部を上から拾う」という真逆のアルゴリズムを用います。

具体例として、十進数の「0.625」を二進数に変換してみましょう。

  1. $0.625 \times 2 = \mathbf{1}.25$ ➔ 整数部「1」を取り出し、小数部0.25を残す
  2. $0.25 \times 2 = \mathbf{0}.5$ ➔ 整数部「0」を取り出し、小数部0.5を残す
  3. $0.5 \times 2 = \mathbf{1}.0$ ➔ 整数部「1」を取り出し、小数部0.0(終了)

取り出した整数部を、今度は上から順番に並べます。結果は「$(0.101)_2$」となります。小数の第1位は「$2^{-1} = 0.5$」、第2位は「$2^{-2} = 0.25$」、第3位は「$2^{-3} = 0.125$」を表すため、$0.5 + 0.125 = 0.625$となり、正確に一致します。

ここで知っておくべき実務上の重大な知識が、いわゆる「0.1の罠」です。十進数ではきれいに表記できる「0.1」を二進数に変換しようとすると、計算が終了せず「$0.0001100110011...$」という循環小数(無限小数)に陥ります。コンピュータが数値を扱う際、限られたビット幅で末尾を丸めざるを得ないため、これがPythonやJavaScriptなどで「$0.1 + 0.2 = 0.30000000000000004$」となってしまう浮動小数点演算誤差の正体です。

田中 結衣

田中 結衣

デジタルマーケティングコンサルタント

グルメと旅を愛するフリーライター。全国各地の隠れた魅力を独自の視点から紹介します。