求乙個十進位制數轉化成二進位制後bit為0或1的個數
1、首先解決bit為1的個數,函式如下:
int countonenum (int n)
return
count;
}
2、求bit為0的個數,這種做法在複雜度上比(1)大,因為(1)的迴圈次數只與二進位制數中1的個數一樣,而下面演算法的時間複雜度為 log(n),函式如下:
int countzeronum (int n)
n /= 2;
} return
count;
}
3、後來在網上看到乙個更為通用的解法,可以求十進位制數 x 換算成 n 進製後數為 k 的個數,其實這種做法就是將上面計算bit為0的個數的函式進行改造,使之更通用,演算法時間複雜度也為 log(n),函式如下:
int
count (int x , int n , int k)
x /= n;
} return num;
}
4、使用位操作的方法,此方法中迴圈次數與二進位制數字數一樣,函式如下
int num1 = 0;//bit位為1的個數
int num0 = 0;//bit位為0的個數
void
count(int n)
else
n >>= 1;
} }
be better :) 十進位制轉化為二進位制
今天我們來實現乙個有趣的小案例。要求 任意輸入乙個正十進位制數把它轉化為二進位制數輸出。我這裡使用了遞迴演算法 def transit num,binary 十進位制轉化為二進位制 param num 輸入的10進製 return none if num 2 remainder num 2 num ...
java 十六進製制轉化成十進位制
問題描述 從鍵盤輸入乙個不超過8位的正的十六進製制數字串,將它轉換為正的十進位制數後輸出。注 十六進製制數中的10 15分別用大寫的英文本母a b c d e f表示。方法一 public class test1 system.out.println 十進位制的數是 s 注意 方法一直接呼叫系統方法...
13 3十進位制轉化為二進位制
05.檔名稱 07.完成日期 2013年 11月 08.版本號 v1.0 09.對任務及求解方法的描述部分 遞迴 10.輸入描述 十進位制 11.問題描述 遞迴法做二進位制轉換 12.程式輸出 二進位制 13.問題分析 像張玉老師說的像剝洋蔥先找到芯,在寫出第n 1或n 1與n 2與第n項的關係就很...