十进制转二进制,短除法与位运算两种方法

短除法:比如十进制整数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;
}

    原文作者:进制转换
    原文地址: https://blog.csdn.net/li_zhonglei/article/details/75387059
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞