求两个数对应二进制位不同的个数(深度剖析+补充例题)

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 求两个数对应二进制位不同的个数(深度剖析+补充例题),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

前言:Hello!大家好,我是@每天都要敲代码;今天再给大家带来两道有趣的例题,在你接触这两道例题前,不妨去看一下这篇博客传送门,因为我感觉它们的思路是类似的,只不过玩法是不一样的;无论是怎么,只要我们把知识点掌握,类似的问题也就可以迎刃而解!!!

求两个数对应二进制位不同的个数(深度剖析+补充例题)

目录

题目:求两个数对应二进制位不同的个数

方法1:利用>>运算符

解析:

具体代码:

方法2:利用^然后&运算符

解析:

具体代码:

总结:

每日一题:

解析:

具体代码: 

 结语:

题目:求两个数对应二进制位不同的个数

方法1:利用>>运算符

解析:

     既然我们需要求个数,所以最简单方法就是定义一个计数器count,之后我们可以思考,一定要想办法把两个数的每个二进制位取出来,怎么取出来呢?那就需要利用(右移)>>运算符;比如:两个数m和n,我们写一个循环看:((m>>i)&1) 与 ((n>>i)&1)是否相等,不等我们count++就可以了!

具体代码:

求两个数对应二进制位不同的个数(深度剖析+补充例题)

方法2:利用^然后&运算符

解析:

    第二种方法就有意思了,我们定义好计数器count以后,怎么办呢?找不同,找不同!!是不是想到一个运算符^,相异得到1,相同是0;有了这个思路我们定义一个变量ret = m^n,这样ret中1的个数,实际上就是m和n中二进制位不同的个数。那么问题又来了,我们怎么得到一个数中二进制位为1的个数呢?这就需要我才开始推荐的那篇博客,里面有3种方法,这里我们就使用效率最高的算法(&与运算符)!

具体代码:

求两个数对应二进制位不同的个数(深度剖析+补充例题)

总结:

    有些小伙伴应该会提问,那如果两个都是负数,或者一个是正数一个是负数怎么办呢?我们不妨把m和n定义为无符号整型,unsigned int munsigned int n,这样即使有负数也是没问题的。这里就不在赘述,感兴趣的小伙伴不妨自己动手测试一下!

每日一题:

有了上面的理解,我们不妨测试一下你的学习成果。题目:打印整数二进制的奇数位和偶数位

解析:

    吸取上面的理解,我们还是写一个for循环,利用>>操作符去取出它的偶数位和奇数位,这题的难点在于我们要理清楚它移位的逻辑,移几位?范围的开始和结束?我们不妨通过画图的形式去理解:

求两个数对应二进制位不同的个数(深度剖析+补充例题)

求两个数对应二进制位不同的个数(深度剖析+补充例题)

具体代码: 

求两个数对应二进制位不同的个数(深度剖析+补充例题)

 结语:

    以上就是今天的学习内容,每天学习一点点,慢慢积累沉淀,相信最终我们都会变得强大;接下来给大家分享3张校园的美图,看一下美景;放松一下眼睛吧!

求两个数对应二进制位不同的个数(深度剖析+补充例题)

求两个数对应二进制位不同的个数(深度剖析+补充例题)

求两个数对应二进制位不同的个数(深度剖析+补充例题)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/128535.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!