C语言-----计算两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?

简介: C语言-----计算两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
int countBits(int n)
{
    int count = 0;
    while (n)
    {
        count += n & 1;
        //count=count+n&1
        //n&1的结果只可能是1或者0
        //如果对应的二进制位上的数字不同,那么n&1的结果就是1,
        //那么count 刚好加一
        n >>= 1;
        //将n的二进制数列向右移动一位
        //换下一个数进行比较
    }
    return count;
}
 
int main()
{
    int m, n;
    scanf("%d %d", &m, &n);
 
    //异或操作可以直接比较两个整数的对应位。
    // 当两个整数的对应位相同时,异或结果为0;
    // 当对应位不同时,结果为1。
    // 这意味着异或结果的每一位都直接告诉
    // 我们原始两个整数在该位上是否不同。
    int result = m ^ n;//算出m和n的异或值,再将算出来的值带到函数进行计算
    int differentBits = countBits(result);
    printf("不同的数有%d个", differentBits);
 
 
    return 0;
}
 
//先得在外面将m和n的异或值求出来
//在异或的作用下,两个整数的二进制序列的不同都显现出来了

临近期末--希望各位大牛期末顺利过关,不挂科,加油,未来的大牛们

相关文章
|
3月前
|
C语言
【C语言刷题每日一题#牛客网BC6】输入三个整数,输出第二个整数
【C语言刷题每日一题#牛客网BC6】输入三个整数,输出第二个整数
|
3月前
|
存储 C语言
【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
|
3月前
|
C语言
【C语言刷题每日一题】——求1到100中包含数字9的整数的个数
【C语言刷题每日一题】——求1到100中包含数字9的整数的个数
|
2月前
|
存储 Python
语音输入,python数据类型,type()用来查看数据类型,数据类型转换,int(x)转整数,float(x)转换为浮点数,str(x),将对象转为字符串,标识符,标识符不允许使用关键字,关键字参考
语音输入,python数据类型,type()用来查看数据类型,数据类型转换,int(x)转整数,float(x)转换为浮点数,str(x),将对象转为字符串,标识符,标识符不允许使用关键字,关键字参考
|
3月前
|
C语言
【C语言刷题系列】交换整数的奇数位和偶数位
【C语言刷题系列】交换整数的奇数位和偶数位
|
3月前
|
存储 C语言
【C语言进阶篇】整数在内存的存储——原码、反码、补码
【C语言进阶篇】整数在内存的存储——原码、反码、补码
|
3月前
|
C语言
【C语言刷题系列】计算整数的二进制位中1的个数 (三种方式)
【C语言刷题系列】计算整数的二进制位中1的个数 (三种方式)
|
4月前
|
数据采集 分布式计算 数据处理
Dataphin常见问题之与指定类型int不兼容如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
4月前
|
SQL 流计算 OceanBase
OceanBase CDC从热OB库采集过来的Tinyint(1)类型会默认转换成Boolean,请教一下,如果想转换成int类型,有什方法么?
【2月更文挑战第25天】OceanBase CDC从热OB库采集过来的Tinyint(1)类型会默认转换成Boolean,请教一下,如果想转换成int类型,有什方法么?
119 3
|
1月前
|
Java
【Java基础面试五】、 int类型的数据范围是多少?
这篇文章回答了Java中`int`类型数据的范围是-2^31到2^31-1,并提供了其他基本数据类型的内存占用和数值范围信息。
【Java基础面试五】、 int类型的数据范围是多少?