十進位制轉二進位制,短除法與位運算兩種方法
阿新 • • 發佈:2019-02-15
短除法:比如十進位制整數19
19/2=9……1
9/2=4……1
4/2=2……0
2/2=1……0
所以最後計算的結果就是10011
短除法程式碼:
#include <iostream> using namespace std; int main() { int n; while(cin>>n) { int cnt=0; while(n!=1) //當除到結果為1的時候,停止迴圈 { if(n%2==1) //餘數為1,則計數加1。 { cnt++; n=n/2; } else n=n/2; } cnt++; cout << cnt << endl; } return 0; }
位運算的方法,輸入的正整數每次與自己減1之後的數做位與(&)運算,每次運算就會減少一個1。
位運算程式碼:
#include <iostream> #include <string> using namespace std; int main() { int n; while(cin>>n) { int cnt=0; while(n) { n=n&(n-1); cnt++; } cout << cnt << endl; } return 0; }