一度に1つずつ、ビット演算を使用してchar(8ビット)を作成しようとしてhex
います。私が実行しているマシンはリトルエンディアンです。
とにかく、例えば:
char buff;
buff = 0x54; // ('T')
printf(" %c \n", buff ); // prints T
buff |= 0x54; // Produces the same result.
buff |= 0x50 | 0x04; // Produces the same result.
0x5
しかし、とでビットシフトを使用して上記を作成できるはず0x4
です。
私はもう試した
buff = ((buff << 4) | 0x4) | (buff | 0x5);
そしてその変種ですが、進歩はありません。シンプルなものが欠けている気がします。
編集:解決しました。
皆さんありがとう。何をシフトするかを言わずにシフトできるなんて知らなかった*?
- 「buff=0x5 << 4 | 0x4」について完全に理解していない可能性があります。正しく解釈すると、4が左にシフトし、0x5を設定してから、ORと4を設定しますか?** 気にしない。以下のマイクはそれが何をしたかを徹底的に説明しました。すべてに感謝します。