2012-01-10 8 views

答えて

3

あなたは本当に測定する必要があります。ビッグエンディアンとリトルエンディアンの違いを意識する(

struct { 
    union { 
     uint16_t big; 
     uint8_t small[2]; 
    }; 
} nums; 

:(あなたは私が希望よりも測定からより多くの利益を得たいので)私は、あなたの質問に答えていますが、私はあなたの番目のオプションをあげますここに)

+0

どのように測定できますか?私はプログラミングに弱いです。 –

+0

しかし、あなたが考えることができる多くの異なる方法を試してみて、どれだけの時間がかかるかを測定します。 Arduinoの "loop()"関数では、テストコードを何度か呼び出すfor()ループがあります。 for()ループがmicros()から戻り値を保存する前に、それをmicros()の値から引きます。シリアルポートで差を出力し、シリアルモニタで時間を表示します(IDEを使用していると仮定します)。 BTW - ATmegaチップがどのエンディアンであるかを知っている限り、ユニオンは最高の状態で動作するはずです。 –

0

1つのオプションは、(すでに述べたように)それを測定することです。

または、両方をコンパイルして、アセンブリ言語の出力がどのように表示されるかを確認します。

実際には、2番目のコードは機能しません。value << 8charに割り当てると、charはすべてゼロになります。その後の>>8は、あなたにゼロを残します。

関連する問題