79

エンディアンはビットごとの操作でまったく問題になりますか? 論理的かシフトか?

ビット演算について宿題をやっているのですが、表も裏も作れず、エンディアンにかなりハマっていると思います。つまり、私はリトル エンディアン マシンを使用していますが (ほとんどのマシンと同様)、これを考慮する必要がありますか?それとも無駄な事実ですか?

念のため、C を使用しています。

4

5 に答える 5

6

他の人が述べたように、シフトは C 言語仕様によって定義され、エンディアンとは無関係ですが、右シフトの実装は、アーキテクチャが 1 の補数または 2 の補数演算を使用するかどうかによって異なる場合があります。

于 2009-06-25T00:10:20.027 に答える
4

場合によります。数値を新しい型にキャストしなくても、エンディアンを透過的に処理できます。

ただし、操作に新しい型のキャストが含まれる場合は注意してください。

たとえば、一部のビットを右にシフトして (明示的または非明示的に) 新しい型にキャストする場合、エンディアンが重要です!

intエンディアンをテストするには、 を にキャストするだけですchar

int i = 1;

char *ptr;

...

ptr = (char *) &i;  //Cast it here

return  (*ptr);
于 2012-06-12T18:28:08.530 に答える