私は、小数を浮動小数点値として表現することについて研究しています。これは8ビット表現になります。本文のどこかで、次のように述べられています。
“最初のビットを使用して符号を表し(1は負、0は正)、次の4ビットは7の合計を表します。そして実際の指数(負の指数を考慮して7を追加)、およびマンティッサの小数部の最後の3ビット」
ここで、質問です。は:なぜ「7」(別の値ではない)を実際の指数に追加する必要があるのですか?
コメント
- CS.SEへようこそ!テキストは、括弧内にその理由を示唆しています。ちなみに、' 1つのテキストの説明がわからない場合は、'主題の別の説明を検索すると役立つことがよくあります。 。浮動小数点に関する多くのリソースがあります。
- では、なぜ7を追加する必要があるのですか?
- 'があなたの答えを理解している場合最初の質問です。投稿を編集して、理解していることを示すことをお勧めします。
回答
4で16の異なる値を表すことができるビット:0、1、…、15。負の指数を許可する場合は、可能な値の(約)半分を負の指数を意味するようにするのが理にかなっています。指数に7を追加することにより、値-7、-6、…、0,1、…、8を表現可能な範囲にマップします。 2の補数を検索することもできます。
コメント
- したがって、7を追加すると、-7、-6、…、-1が対応する正の値にマップされ、7を超える値を追加すると、範囲外の値が正しくなくなります。同じ理由で、7未満を追加すると指数に対して'問題は解決しません。ありがとうございます。'探していたものが見つかりました。
- 異なる数値を追加すると、サポートする負の指数と正の指数が変わります。'設計上の決定です。アプリケーションには-1をサポートするだけで十分かもしれません。
- はい、その通りです。これは、インストラクターがチュートリアルを通じて実装した設計上の決定であり、'厳密な制約ではありません。
- オフセットを使用する決定2 'の補数の代わりにIIRCは、最小値の逆数を最大値よりも小さく保つことでした。 lue、つまりオーバーフローを回避するため。つまり、慎重に選択されました。
- @KWillets:オフセットを使用すると、ゼロをゼロとして表すこともでき、整数比較を使用して浮動小数点数(符号ビットを除く)を比較できます。