2012-11-01 25 views
3

比方說,我有一些用戶輸入(如字符串),如「11010011011」。Java中的按位運算:測試是否在「1010101111011」中設置了一位?

現在我想檢查一下特定位置是否有位(每個數字應該作爲標誌)。

注意:我正在接收用戶輸入的字符串。

我該怎麼做?

+2

不能使用'charAt(position)'方法嗎?和比較值是0/1? –

+0

爲什麼你必須使用按位操作來做到這一點?!?!?! – Pigueiras

+0

我不知道什麼是最好的方式來做到這一點。也許我不需要按位操作。 – mrd

回答

4

你可以用字符串上班是 - 說你要檢查左邊第一位:

if (input.charAt(0) == '1') { // 

另外,如果您想用BitSet工作,你可以在一個循環中初始化它:

String input = "11010011011"; 
BitSet bs = new BitSet(input.length()); 
int i = 0; 
for (char c : input.toCharArray()) { 
    if (c == '1') bs.set(i); 
    i++; 
} 

然後,以檢查第i位被設置:

boolean isSet = bs.get(i); 
4

如果你想使用按位運算,那麼首先將字符串轉換爲整數並用位掩碼測試:

int val = Integer.parseInt("11010011011", 2); 
System.out.println(val & (1<<0)); //First bit 
System.out.println(val & (1<<1)); //Second bit 
System.out.println(val & (1<<2)); //Third bit 
.....