2013-05-28 60 views
0

我最近在java項目中工作,我想處理一個整數的位,以便我可以檢查一個數字的LSB。 我已經找到了很多可以妥善處理的辦法,但沒有...有沒有辦法讓我(我改變)LS從int?

鍵= 4 重點4二進制是100 我想以某種方式提取3 LSB 4這是1。 有沒有一種算法可以做到這一點?

+0

你知道二進制算術嗎?使用它。另外,什麼樣的整數值'鍵'去? – Hanut

+0

@Hanut正值 – Antifa

+4

[Java教程:位移和位移運算符](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html) –

回答

4

使用比特移位及位與:(索引值爲從0)

int getBit(int number, int index) 
{ 
    return (number >> index) & 1; 
} 

getBit(4, 2)返回1

您還可以使用% 2而不是& 1

+0

優秀和優雅的方法!非常感謝你!也許這將是靈活性的+1 – Antifa

+2

+1。 –

2

使一個位掩碼和移位:

int bitmask = 4; 

int extractedBit = (i & BIT3) >> 2; // is now the 3rd lsb. 
1

好的,試試這個。由於第3個LSB將基於數字的單位位置值,但無論大小如何,如果它小於4或大於7,則該值爲0.因此,單位中的(0,1,2,3)U(8,9)會給出第3個LSB如0(4,5,6,7)給予1

int key = 12000; 
int i=4; 
if((key/(10^(i-1))%10 < 4 || (key/(10^(i-1))%10 >7) 
    lsb3 = 0; 
else 
    lsb3 = 1; 
+0

這隻給出第三個LSB? – Antifa

+0

幾乎我想 – Hanut

+0

不,我的意思是我需要找到第i個LSB每次...我不需要只有第三個LSB。不過謝謝 – Antifa

相關問題