有沒有辦法獲取一個十六進制數字中的特定位來驗證?位操作:獲取一個數字中的單個位
例如:0x11,我想知道索引2是否爲1.如果是這樣,我將執行一個操作。
我看着位操作,但我沒有找到任何關於特定位的任何信息。
有沒有辦法獲取一個十六進制數字中的特定位來驗證?位操作:獲取一個數字中的單個位
例如:0x11,我想知道索引2是否爲1.如果是這樣,我將執行一個操作。
我看着位操作,但我沒有找到任何關於特定位的任何信息。
基於0x11
,我打算猜想你正在使用C或類似於使用相同的按位運算符的東西。
在這種情況下,您首先構建一個具有您所關心的位的位掩碼。要獲得一個設置了掩碼的掩碼,通常需要設置1
(它只設置了最低有效位),並將其移到適當的位置以將該位置放在您關心的位置。
然後你在掩碼和輸入之間做一個按位and
。
最後,檢查and
的結果是否爲零。
int position = 2;
int bitmask = 1 << position;
if (input & mask)
// that bit was a 1
else
// that bit was a 0
mmmmm ....如果您複製數字,將該數字的值更改爲零,並使用XOR?
例如:我想知道,如果第3位(左到右),它是一個或零:
001011011
XOR
000011011
---------
001000000 // "TRUE"
000011011
XOR
000011011
---------
000000000 // "FALSE"
111111111
XOR
110111111
---------
001000000 // "TRUE"
等等
謝謝你,一個非常簡單的解決方案! – 2012-03-26 15:47:59