[位运算]位运算的4个简单应用

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

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

img

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

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

img

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

img

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

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

img

img

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

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

img


文章结束了,但我们的故事还在继续
坚持原创技术分享,您的支持将鼓励我继续创作!