1. 程式人生 > >十進位制轉二進位制,短除法與位運算兩種方法

十進位制轉二進位制,短除法與位運算兩種方法

短除法:比如十進位制整數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;
}