0

2 つの 4 ビット 16 進値 A、B があり、A を MSD、B を LSD で 8 ビット値を作成したい:

これは私の試みです:

  uint8_t X = (A << 4) & (B); 

値を取得していますが、それが正しいかどうかはわかりません。

これは正しい方法ですか?

4

1 に答える 1

0

次のようにする必要があります。

uint8_t X = (A << 4) | (B); 
                    ^^^

これは、ビットごとのAND ( ) ではなく、ビットごとのOR ( |) で 2 つの値を結合する必要があるためです。&

ビットごとの OR を使用してニブル値を組み合わせる同様の例については、前の質問に対するこの回答を参照してください。

于 2013-06-13T10:57:56.773 に答える