2016-02-06 62 views
1

因此服用answer最upvotes爲基地我試圖創建一個位集合,並設置其位,形成數478(111011110),所以我做了以下內容:爪哇 - 位集合到整數

BitSet set = new BitSet(); 
set.set(0, true); 
set.set(1, true); 
set.set(2, true); 
set.set(3, false); 
set.set(4, true); 
set.set(5, true); 
set.set(6, true); 
set.set(7, true); 
set.set(8, false); 
System.out.println(bitSetToInt(set)); 

以下方法的幫助:

public static int bitSetToInt(BitSet bitSet) { 
     int bitInteger = 0; 

     for (int i = 0; i < 32; i++){ 
      if (bitSet.get(i)) { 
       bitInteger |= (1 << i); 
      } 
     } 
     return bitInteger; 
    } 

所以,雖然我期待讓478這個調用我找回247.有人可以解釋我是怎麼回事?

回答

1

位0是最小位(1 < < 0)。你已經開啓了位0,1,2,4,5,6和7.所以你的號碼是011110111,這是247.

+0

對..我想到了它,但當試用它時,我忘了第一個索引0所以仍然得到了錯誤的答案。我的錯。謝謝 – Rakim