0

私は64ビットのIntelプロセッサで作業しています...ビッグエンディアンとリトルエンディアンについて学んでいましたが、これらはワード内のバイト順であり、64ビットデータではmsbがビッグエンディアン形式で最小のアドレスになり、リトルエンディアン形式の最上位アドレス...今、私は問題を抱えています:

プロセッサがリトル エンディアンかビッグ エンディアンかを判断するためにこのコードを書きました ...

0102030405060708 (this is in hex) 

08and 07and 06and ... and 01as as answerを取得することを望んでいました

しかし、代わりに0and 25and 50and -125and -13and and 501and -41andを取得し66ました。
's' を 2 バイト (short) として同じコードを書いたところ、andの出力 (これ0102はリトルエンディアンに準拠しています) でした。21

4

2 に答える 2

3

入力値をdouble浮動小数点値として格納するとして格納しています。代わりに、64ビット整数を使用してみてくださいlong long。期待どおりに値を格納する必要があります。

于 2012-04-08T12:18:44.467 に答える
2

16進数をaに(double)入れると、期待どおりの結果が得られない可能性があります。これは、2を底とする仮数と指数で構成される浮動小数点値です。あなたはあなたが意図したものを見つける(long)か、それ(long long)に近づくかもしれません。

于 2012-04-08T12:18:36.307 に答える