0bXXXXXXXY
これは、Yが最下位ビットであるバイナリを意味するとします。
結果がビット演算で設定されていると仮定します。
あなたの番号は2バイトでできています。すべての数値が00で終わるため、右(重要度の低い)バイトは常に0b00000000です。左(重要度の高い)バイトを見てみましょう。
bColdとbHotの両方がオンになっている場合0x4100
==0b01000001
bColdとbHotの両方がオフになっている場合0x8200
==0b10000010
bColdがオンでbHOTがオフ の場合0x8100
==0b10000001
bColdがオフでbHOTがオン の場合0x4200
==0b01000010
これから、左端の2ビットがbHotを設定し、右端の2ビットがbColdを設定していることがわかります(右=重要度が低い)。
So:
0b01000000 = *bHot* ON -= `0x40`
0b00000001 = *bCold* ON = `0x01`
0b10000000 = *bHot* OFF = `0x80`
0b00000010 = *bCold* OFF = `0x02`
ここで、常にゼロであると言った正しいバイトを追加すると、次のようになります。
*bHot* ON = 0x4000, OFF = 0x8000
*bCold* ON = 0x0100, OFF = 0x0200
結果はビット単位の「OR」で設定されます
結果が単に数字を追加することによって設定されると仮定します:
(これは間違っています。投稿名にビット単位のORの言及が含まれているためですが、それでも楽しみのために試してみましょう)簡単な方程式で次の図が示されます。
*bCold* OFF: 0x0200, ON: 0x0100
*bHot* OFF: 0x8000, ON: 0x4000
0x0200 + 0x8000 = 0x8200
結果は、たとえば両方がオフの場合など、数値を加算するだけで設定できます。
結論
ご覧のとおり、最終的な結果は次のとおりです。
*bCold* OFF: 0x0200, ON: 0x0100
*bHot* OFF: 0x8000, ON: 0x4000