こんにちは。 >> 1バイト配列をそれぞれシフトし、32ビットのデータにしたいのですが、 シフトする対象が32bitですか? uLData = (unsigned long)Data[3]; uLData <<= 8; uLData += (unsigned long)Data[2]; uLData <<= 8; uLData += (unsigned long)Data[1]; uLData <<= 8; uLData += (unsigned long)Data[0]; なら、明示的にシフトの対象が、32bitあることがわかりますね。 #H8は16bitマイコンなので、上のコーディングだと効率悪そうですが。 一般に、どういうニモニックに落ちるのか確認すれば、コンパイラが、 プログラムをどう解釈したか判りますので、一度見てみられては いかがでしょうか。きっと勉強になると思います。 共用体を使うテクニックですが、SHだと、あまりよいコードを吐かな かった記憶があります。最新のルネサスコンパイラだと改善されてい るかもしれませんが。 -- 三谷