-1

私はこれについて疑問に思っていました-

A、B が 16 ビットの数値で、C が 8 ビットの場合、結果を格納するには何ビットが必要ですか? 32 または 33 ?

また、C が 16 ビットの数値だったらどうなるでしょうか。じゃあ何?

方法と理由を説明して回答をいただければ幸いです。

4

1 に答える 1

2

各レジスタの最大値を取り、結果を確認してみませんか?

すべてのレジスタが署名されていない場合:

0xFFFF * 0xFFFF + 0xFF = 0xFFFE0100 = // 32 bits are enough

0xFFFF * 0xFFFF + 0xFFFF = 0xFFFF0000 // 32 bits are enough

すべてのレジスタが署名されている場合、0xFFFF = -32767 ですが、0xFFFF * 0xFFFF は以前と同じになります (負 * 負 = 正)。RegisterCを使用すると、結果は前の結果よりも少し小さくなりますが、格納するにはまだ 32 ビットが必要です。

于 2014-01-14T12:08:15.297 に答える