我有一個十進制數,我需要將其轉換爲二進制,然後在二進制表示中找到其位置。如何獲取位的位置
輸入是5,其二進制爲101
和輸出應該是
1
3
下面是我的代碼只提供了輸出2
,而不是我想提供的位置之一是在二進制表示。我怎樣才能從1開始獲取設定位的位置?
public static void main(String args[]) throws Exception {
System.out.println(countBits(5));
}
private static int countBits(int number) {
boolean flag = false;
if (number < 0) {
flag = true;
number = ~number;
}
int result = 0;
while (number != 0) {
result += number & 1;
number = number >> 1;
}
return flag ? (32 - result) : result;
}
注意:檢查」數字「是否爲負數的代碼不是必需的。如果你使用'>>>'運算符而不是'>>',那麼零將被移入左邊(而不是1被移位到負數),所以'number'最終將爲0,'result'將會始終是正確的計數。 – ajb
如果您試圖返回1位的位置,那麼使用>>>將是必要的。如果你試圖專門處理負數,你的工作將變得更加複雜。 – ajb