2017-02-21 4 views
1

intとintを比較しているとします。 173ページに書かれている第2版「The C Programming Language」によれば、short intはintに変換されます。これは私のシステム上の短い整数の代わりに4バイトです。C - 算術変換はどのようにメモリレベルで行われますか?

私の質問は:これはどのようにメモリレベルで行われますか?短い整数が2バイト追加されるか、まったく異なるメモリ位置にデータがコピーされますか?

doubleとintをshortとintの比較から編集しました。不便をお詫びします。

+0

フロートは整数よりも完全に異なって符号化されています

あなたは、このような一連の何かを取得します。たとえ整数型と同じサイズの浮動小数点型の間で変換を行っていたとしても、浮動小数点は異なるビットで構成されます。それは単純なビット操作ではありません。 – Kevin

+0

表現の面ではなく、価値観の面で考えるべきです。 'int'の値が' double'型の許容範囲に合っていれば、すべてが問題ありません。それがなければ、あなたは困っています。 –

+1

実装定義です。いくつかのマシンは、load-load-compare-compare、load-convert-compare、load-convert-save-compare、いくつかのload-load-compareを実行します.... load double> double> double double compair FPUは主にロードストアおよびレジスタレジスタアドレッシングであるため、現在最も一般的に使用されている可能性があります。 – user3528438

答えて

1

ほとんどの場合(わかりにくいマイクロコントローラを除いて)、メモリはまったく必要ありません。すべてが登録レベルで行われます。処理中の型を単一レジスタに保持できない場合でも、複数のレジスタに分割されて処理されます。

0

通常、このタイプの比較はCPUのハードウェアレジスタ間で行われます。あなたのメモリ値はレジスタにロードされ、変換がロード中に起こります。

CVTWLのMEMORY_LOCATION、RO COMPL RO、R1

関連する問題