2016-04-25 6 views
-1

ビット単位の操作の順列を使用して、常に一意の結果を生成できますか?ビット演算は常に私の弱点でした。2つの数値に対するビット演算は、常に一意の結果を生成しますか?

私の目標は、OR 2つの数字は常に一意の値を生成することです。そして数字の1つは常に一定です(等価0x0111)。すなわち、

int uniqueDelegateId1 = WM_COMMAND | btn1.id; // resolves to 0x0111 | 50008 
int uniqueDelegateId2 = WM_COMMAND | btn2.id; // resolves to 0x0111 | 50009 

上記の例は、両方とも50009を生成する、ユニークな結果が得られません。別のビットワイズ演算子を使用して、常にユニークな結果を得ることができますか? xorや、などのような?

答えて

0

idの値を使用できない理由はわかりません。

あなたが複数のメッセージ/ IDの組み合わせを区別する必要がある場合は、あなたが

WM_COMMAND | (btn1.id << MAX_COMMAND_BIT_WIDTH)

の線に沿って、それらを一緒に論理和(OR)する前の他の範囲外の値のいずれかをシフトすることができます
関連する問題