• 考察进制转化 十进制转为二进制


     #include 
     using namespace std;
     
     
     int func(int x) {
        int countx = 0;
      
        while (x) {
            countx++;
            x = x & (x - 1);
        }
      
        return countx;
    }   
    
    int main() {
    	int x = 9999;
    	int result = func(x);
    	cout<<result;
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    这个函数的作用是计算输入整数 x 的二进制表示中有多少个 1
    在这里插入图片描述

    当使用除二取余法将整数 x = 9999 转化为二进制时,可以按照以下步骤进行:
    
    初始化一个空字符串来保存二进制表示。
    不断地将 x 除以 2,同时记录每次的余数。
    将每次得到的余数转换为字符,并添加到字符串的开头。
    当 x 等于 0 时,停止运算。
    以下是每一步的详细计算过程:
    
    初始字符串: ""
    
    第一步:
    x = 9999
    余数:x % 2 = 9999 % 2 = 1
    更新字符串: "1"
    更新 x: x = x / 2 = 9999 / 2 = 4999
    
    第二步:
    x = 4999
    余数:x % 2 = 4999 % 2 = 1
    更新字符串: "11"
    更新 x: x = x / 2 = 4999 / 2 = 2499
    
    第三步:
    x = 2499
    余数:x % 2 = 2499 % 2 = 1
    更新字符串: "111"
    更新 x: x = x / 2 = 2499 / 2 = 1249
    
    第四步:
    x = 1249
    余数:x % 2 = 1249 % 2 = 1
    更新字符串: "1111"
    更新 x: x = x / 2 = 1249 / 2 = 624
    
    第五步:
    x = 624
    余数:x % 2 = 624 % 2 = 0
    更新字符串: "01111"
    更新 x: x = x / 2 = 624 / 2 = 312
    
    第六步:
    x = 312
    余数:x % 2 = 312 % 2 = 0
    更新字符串: "001111"
    更新 x: x = x / 2 = 312 / 2 = 156
    
    第七步:
    x = 156
    余数:x % 2 = 156 % 2 = 0
    更新字符串: "0001111"
    更新 x: x = x / 2 = 156 / 2 = 78
    
    第八步:
    x = 78
    余数:x % 2 = 78 % 2 = 0
    更新字符串: "00001111"
    更新 x: x = x / 2 = 78 / 2 = 39
    
    第九步:
    x = 39
    余数:x % 2 = 39 % 2 = 1
    更新字符串: "100001111"
    更新 x: x = x / 2 = 39 / 2 = 19
    
    第十步:
    x = 19
    余数:x % 2 = 19 % 2 = 1
    更新字符串: "1100001111"
    更新 x: x = x / 2 = 19 / 2 = 9
    
    第十一步:
    x = 9
    余数:x % 2 = 9 % 2 = 1
    更新字符串: "11100001111"
    更新 x: x = x / 2 = 9 / 2 = 4
    
    第十二步:
    x = 4
    余数:x % 2 = 4 % 2 = 0
    更新字符串: "011100001111"
    更新 x: x = x / 2 = 4 / 2 = 2
    
    第十三步:
    x = 2
    余数:x % 2 = 2 % 2 = 0
    更新字符串: "0011100001111"
    更新 x: x = x / 2 = 2 / 2 = 1
    
    第十四步:
    x = 1
    余数:x % 2 = 1 % 2 = 1
    更新字符串: "10011100001111"
    更新 x: x = x / 2 = 1 / 2 = 0
    
    最终的二进制表示为:"10011100001111"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
  • 相关阅读:
    宁夏果蔬系统
    PHP中=>和->有什么区别?
    CleanMyMac X2024告别硬盘空间不足,让您的Mac电脑极速如新
    「AI知多少」第二期推荐《AIGC:智能创作时代》
    如何用GPT高效地处理文本、文献查阅、PPT编辑、编程、绘图和论文写作?
    day19Git
    “唯品会VIP商品搜索API:尊享购物体验,一键获取心仪商品!“
    cesium 雷达扫描 (扫描线)
    Python自动化(3)——鼠标模拟
    Java语言有多少优势(总结版)
  • 原文地址:https://blog.csdn.net/weixin_46716100/article/details/133298593