2014-04-23 37 views
5

我在找什麼?捕獲「丟棄」位值

讓我們考慮int a = 5例如

其二進制是:101

所以,當我們做

a >> 1 

那麼最右邊的位,即1在這種情況下,將,我想抓住它的一些變數..ie,

1st iteration k = 1 
2nd iteration k = 0 
3rd iteration k = 1 

在這種情況下,我有一個硬編碼的值,但它可以是任何用戶輸入的數字。

如果我這樣做b = a >> 1然後b= a/2所以在這裏毫無頭緒!

我爲什麼問這個問題?

例如,以程序爲十進制到二進制轉換,在這種情況下,如果我能趕上下降位,然後程序會在3-4行最多做...

當然還有其他邏輯,我需要知道它是否可能!

+0

**如果u計劃downvote,請不要落個理由吧**,爲m不是'bit'人在我日常編程生活! :) – NoobEditor

回答

7

存儲在一個變量的最低位之前移位,例如,

int a = 5; 
int lowestBit = a & 1; 
a >>= 1; 
+0

有沒有類似的方法最左邊的位太....假設我不考慮簽名位? – NoobEditor

+1

@NoobEditor對於最重要的位,只需將位掩碼「1」更改爲僅設置該位的位掩碼,例如,對於32位「int」,例如「0x80000000」或「0x40000000」,具體取決於是否要捕捉符號或不是。如果十六進制語法看起來很難理解,那麼只需用shift來形成位掩碼,即'signBit = a&(1 << 31)','nextHighest = a&(1 << 30)',請記住' (1 << 0)== 1',即最低位。 – Arkku