优秀的编程知识分享平台

网站首页 > 技术文章 正文

算法练习题——位运算(位运算技巧)

nanyue 2024-10-18 07:35:39 技术文章 7 ℃

关注“爱当程序员的我”,每天都有关于编程头条发布


今天给大家讲讲神奇的位运算,有些想法总是那么的出人意料。

不用额外的变量交换两个整数的值

这题采用异或位运算,异或的原理是相同位置的二进制值异或,相同结果为0,不同结果为1。

两个相同的数异或结果等于0。

就这道题而言,在运算过程中会产生一个中间值,即a与b的异或结果,a异或b再异或b就会等于a,如果第二次异或a就会等于b。

演示

所以直接三个异或就可以搞定

C++代码实现

不用任何比较判断两个数中大的那个数

我们将两个数做差,得到另一个数,判断这个数的符号位就可以了。当然,不能直接使用判断语句,所以我们使用位运算来操作。

C++代码实现

整数的二进制中有多少个1

每次循环采用n&=(n-1),这样可以跳过二进制位是0的数。

演示

C++代码实现

数组中只有一个数出现了奇数次,其他数都出现偶数次,找出这个数

这道题还是使用了异或的性质,两个相同的数异或等于0,遍历一遍数组就可以得到出现奇数次的那个数。

C++代码实现


结束语:

如果喜欢这篇头条,一定要收藏哟^O^

点击关注,了解更多关于编程的知识^O^

如果有不懂的地方,可以留言,相互探讨,相互学习,共同进步^O^

Tags:

最近发表
标签列表