• 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同


    思路:利用&用算加右移的方法来提取二进制中的每一位数,然后进行比较,查看是否相同。

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 int main()
     5 {
     6     //i=1999 -> 011111001111
     7     //j=2299 -> 100011111011
     8     int i = 0, j = 0;
     9     int a = 0, b = 0, num = 0;
    10     //a与b分别是i与j二进制中的最后一位的数字,num 为位(bit)不同的个数
    11     printf("请输入您要比较的两个数字:
    ");
    12     scanf("%d %d", &i, &j);
    13     while (i != 0 || j != 0)
    14     {
    15         //这里查看整数i的二进制的最后一位并赋值给a
    16         //每次查看结束就右移一位改变最后一位的数值
    17         if ((i & 1) == 1)
    18         {
    19             a = 1;
    20             i = i >> 1;
    21         }
    22         else
    23         {
    24             a = 0;
    25             i = i >> 1;
    26         }
    27         //这里查看整数j的二进制的最后一位并赋值给b
    28         //每次查看结束就右移一位改变最后一位的数值
    29         if ((j & 1) == 1)
    30         {
    31             b = 1;
    32             j = j >> 1;
    33         }
    34         else
    35         {
    36             b = 0;
    37             j = j >> 1;
    38         }
    39         //最后比较a和b的值,不一样则++num
    40         if (a != b)
    41         {
    42             ++num;
    43         }
    44 
    45     }
    46     printf("%d",num);
    47     
    48     return 0;
    49 
    50 }
  • 相关阅读:
    iOS数据持久化—FMDB框架的简单介绍
    iOS数据持久化—SQLite常用的函数
    多段图动态规划dp
    Cucumber测试驱动开发
    敏捷开发XP
    Android 小票打印USB
    TextInputLayout 用法
    Snackbar 提醒
    PermissionDispatcher 运行时权限框架
    Tinker 热修复
  • 原文地址:https://www.cnblogs.com/cuckoo-/p/10360956.html
Copyright © 2020-2023  润新知