10進数を2進数のIEEE754形式に変換します

著者: John Pratt
作成日: 15 2月 2021
更新日: 1 J 2024
Anonim
基本情報技術者試験対策 48 浮動小数点
ビデオ: 基本情報技術者試験対策 48 浮動小数点

コンテンツ

人間とは異なり、コンピューターは10進数システムを使用しません。それらは、0と1の2桁の可能な2進数または2進数システムを使用します。したがって、IEEE 754(浮動小数点で2進数を表すためのIEEEの標準)では、数値の記述が従来の10進数システムとは大きく異なります。に使用され。この記事では、IEEE 754に従って、単精度または倍精度で数値を書き込む方法を学習します。この方法では、数値をバイナリ形式に変換する方法を知る必要があります。これを行う方法がわからない場合は、記事「2進化10進数への変換」を調べることでこれを学ぶことができます。

ステップに

  1. 単精度または倍精度を選択します。 単精度または倍精度で数値を書き込む場合、変換を成功させる手順はどちらも同じです。唯一の変更は、指数と仮数の変換で発生します。
    • まず、単精度の意味を理解する必要があります。浮動小数点表現では、任意の数値(0または1)は「ビット」と見なされます。したがって、単精度には合計32ビットが3つの異なるサブジェクトに分割されます。これらのサブジェクトは、符号(1ビット)、指数(8ビット)、仮数または分数(23ビット)で構成されます。
    • 一方、倍精度は、単精度と同じセットアップと同じ3つの部分を持ちます。唯一の違いは、より大きく、より正確な数値になることです。この場合、符号は1ビット、指数は11ビット、仮数は52ビットになります。
    • この例では、IEEE754に従って数値85.125を単精度に変換します。
  2. 小数点の前後の数値を区切ります。 変換したい数を取り、それを分離して、整数と10進数が残るようにします。この例では、85,125という番号を想定しています。これを整数85と小数0.125に分けることができます。
  3. 整数を2進数に変換します。 これは85.125の85になり、バイナリに変換すると1010101になります。
  4. 小数部を2進数に変換します。 これは85.125の0.125であり、バイナリ形式では0.001になります。
  5. 2進数に変換された数値の2つの部分を結合します。 数値85は2進数(たとえば1010101)で、小数部0.125は2進数0.001です。それらを小数点と組み合わせると、最終的な答えとして1010101.001が得られます。
  6. 2進数を2進数の科学的記数法に変換します。 小数点を最初のビットの右側になるまで左に移動することで、数値を2進科学記数法に変換できます。これらの数値は正規化されています。つまり、先頭ビットは常に1になります。指数については、小数を移動する回数が2進科学記数法の指数です。
    • 小数を左に移動すると正の指数が生成され、小数を右に移動すると負の指数が生成されることに注意してください。
    • この例では、小数点を6回移動して、最初のビットの右側に配置する必要があります。結果のフォーマットは次のようになります 01,01010100126{ displaystyle 01.010101001 * 2 ^ {6}}数値の符号を判別し、バイナリ形式で表示します。 ここで、元の数値が正か負かを判断します。数値が正の場合はそのビットを0として書き込み、負の場合は1として書き込みます。元の数値は85.125正であるため、そのビットを0として書き込みます。これが単精度の合計32ビットの最初のビットになります。 IEEE754に準拠したレンダリング。
    • 精度に基づいて指数を決定します。 単精度と倍精度の両方に固定バイアスがあります。単精度の指数バイアスは 127、これは、以前に見つかったバイナリ指数を追加する必要があることを意味します。したがって、使用する指数は次のようになります。 127 + 6 = 133.
      • 名前が示すように、倍精度はより正確であり、より大きな数を保持できます。したがって、指数のバイアス 1023。ここでは、単精度に使用されるのと同じ手順が適用されるため、倍精度を決定するために使用できる指数は1029です。
    • 指数をバイナリに変換します。 最終的な指数を決定したら、IEEE 754変換で使用できるように、それをバイナリに変換する必要があります。この例では、最後の手順で見つけた133を10000101に変換できます。
    • 仮数を決定します。 仮数の側面、つまりIEEE 754変換の3番目の部分は、科学的な2進表記の10進数の後の数の剰余です。前の1を省略し、2を掛けた数値の小数部分をコピーするだけです。バイナリ変換は必要ありません!この例では、仮数は010101001になります。 01,01010100126{ displaystyle 01.010101001 * 2 ^ {6}}最後に、3つの部分を1つの数値に結合します。
      • 最後に、これまでに計算したすべての変換を組み合わせます。番号は、最初に、符号に基づいて手順7で決定した0または1で始まります。この例では、0から始めます。
      • 次に、ステップ9で決定した指数があります。この例では、指数は10000101です。
      • 次に、変換の3番目で最後の部分である仮数が来ます。バイナリ変換の小数部分を取得したときに、これを以前に推測しました。この例では、仮数は010101001です。
      • 最後に、これらすべての数値を互いに組み合わせます。順序は符号指数仮数です。これらの3つの2進数を接続した後、仮数の残りの部分をゼロで埋めます。
      • たとえば、85.125をバイナリIEEE754形式に変換することが解決策です 0 10000101 01010100100000000000000.