特定のマスクで決定できるブランチレスのビット単位の操作を探しています:
マスク : 0xFF0000 値 : 0xAA0000 戻り値 : true
Mask : 0xFF0000 Value : 0xAA00AA return : false
マスク : 0xFF00FF 値 : 0xBB00AA リターン : true
マスク : 0xFF00FF 値 : 0x0000AA 戻り値 : false
マスク : 0xFF00FF 値 : 0xAA0000 戻り値 : false
Mask : 0xFF00FF Value : 0x0A00AA return : true
つまり、次の場合に true を返す必要があります。
- マスクのバイトが 0 に設定されている場合、値は同じバイトを 0 にする必要があります。
- マスクのバイトが > 0 に設定されている場合、値には 0 以外の同じバイトが必要です。
編集 :
0xFFFF00 と 0x00AA00 は一致してはなりません。マスクのバイトが 0 より大きい場合、値は同じバイトが 0 より大きい必要があります。
つまり、マスクにこのパターン [XX][00][XX] がある場合、値は同じでなければなりません。XX の値は 01 から FF までです。
ありがとう!