現在、質問には「250500 * 250500 = 62,570,250,000があります」とあります。
まあ、これは完全であり、まったくナンセンスです。
250500 * 250500 = 62,570,250,000。(質問で指定された
間違った計算)250500 * 250500 = 62,750,250,000。(右数学、質問がおそらく尋ねることを意味したもの)
これは私の計算のいくつかを捨てていました。タイプミスを想定し、それを修正した場合、62,750,250,000に対してこの回答を提供できます。
この質問に対する簡単でわかりやすい答えは、小さい数字をパワーとともに保存することです。それが答えであり、少数の単語に要約されています。その答えにはおそらく説明が必要なので、このテキストの残りの部分を説明します。
25,500は18ビットです。
2は1ビットです。
それには合計19ビットが必要です。それは32ビットです。動作します。
実際、この考え方は、x86 CPU(80387以降)がSignificandとしていくつかのビットを使用して浮動小数点数を追跡する方法と非常に似ています。
この質問では、62,570,250,000を直接の番号として保存する必要があるとは明記されていません。最初にできることは、それを平方根化して、結果が整数かどうかを確認することです。結果は整数であるため、完全に有効なソリューションが利用可能です。このソリューションでは、549,755,748,352(8,388,607 * 65,536、別名8,388,607 *(2の16乗)に等しい)の数値を格納できます。このシステムは正確に表現できることを数値の一つがある
62750250500
この同じシステムを格納することができないであろうにもかかわらず
62750250499を
ただし、質問では、可能な限り小さい数字をすべて保存する必要はなかったため、問題ありません。質問は、単純に62,750,250,500の数字を表す方法を望んでいました。それは完全に実行可能です。
したがって、保存するビットは次のとおりです
。0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 1 0 0 1 0 1 0 0 0 0 1 00
一般的なIEEE浮動小数点アセンブリに類似した手法を使用すると、これらのビットは次のように解釈されます。
-
正の数(最初のビット)
-
25500(ビット10から32)
-
それは一度に乗算されます
ビット2〜8および10〜14は先行ゼロであることに注意してください。これは7 + 5 = 12ビットで、この場合はあまり効果的ではありません。正の数が想定される場合、それはこの特定の場合には少し効果的/非効率的な13ビットであるため、これらが異なる方法で使用される可能性があります。(以前、32ビットのうち19ビットが必要だと言っていたことを思い出してください。13+ 19 = 32。)
ここでの考え方は、「出力」を大きな数値として保存する必要がないということです。この数値は2のべき乗として簡単に表現できることがわかっている場合です。62,750,250,000の値は事実上保存されており、その表現方法は、より小さな数を累乗とともに保存することです。基本的に、指定した既知の式と組み合わせると、この特定の数値を保存できるデータを保存します。(この式は、人々が2乗数を扱うことが多い状況で、他の数を保存するのに合理的に役立つ可能性があります。)
注:このシステムは多少似ていますが、x86アセンブリに焦点を当てたUniversity Assemblyクラスで説明したIEEEの浮動小数点システムと同じではありません。IEEE浮動小数点のオンラインコンバーターへのハイパーリンクを次に示します。そのシステムに使用できます。そのシステムでは、指数のビットは、残りのビットの乗算に使用される2の累乗を指定します。ただし、25,500は2の累乗ではないため、この場合には当てはまりません。IEEEの浮動小数点システムを使用しようとすると、62,750,250,000を16で割った値が3,921,890,625であることがわかります。したがって、この数値を3,921,890,625回(2の4乗)で表すことができます。それでも、必要な32ビットよりも大きい36ビットが必要になります(Intelのコプロセッサが非指数バージョンの数値を格納するために使用する24ビットよりも大きい)。
質問の「低と高を使用する」部分をほとんど無視したかもしれません。私は質問が何を求めているのかについてあまり明確ではありませんでした。ただし、このシステムは異なる目的で異なるビットを使用するため、データの指数部は、下位に配置された他のビットよりも「上位」ビットと見なすことができます。したがって、「これをどのように表現できるか」という質問は、太字の文によって直接回答され、この回答の残りの部分でさらに説明されます。