私は Codewarrior で作業しており、ビット単位の左シフト (>>) を「char-casted」int 変数に実行しようとしています。つまり、次のようになります。
int checksum=0x017b;
char checksum_H=(char) checksum >>8; //higher part of checksum
char checksum_L=(char) checksum; //lower part of checksum
問題は、実際には の正しい値を取得できますchecksum_L
が、の場合checksum_H
は 0x00 を取得することです....そして、">>" の代わりに ">" を使用してシフトを実行しようとした場合にのみ、0x01 の正しい結果が得られます。 ..
なぜこれが起こっているのか、誰か分かりますか?