「Leetcode-算法_Easy461」通过「简单」题目学习位运算
2021/8/9 17:05:50
本文主要是介绍「Leetcode-算法_Easy461」通过「简单」题目学习位运算,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Easy 461.汉明距离
因为原题目翻译效果不佳,这里是笔者自己的理解。
输入两个二进制数 x、y,
输出将 y 变为 x 所需改变的二进制位数,成为汉明距离。
注意:
0 ≤ x, y < 2e31.
示例:
输入: x = 1, y = 4
输出: 2
解释:
1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑
补充「位运算」
符号 | 描述 | 运算规则 |
---|---|---|
& | 与 | 两个位都为 1 时,结果才为 1 |
| | 或 | 两个位都为 0 时,结果才为 0 |
^ | 异或 | 两个位相同为 0,相异为 1 |
~ | 取反 | 0 变 1,1 变 0 |
<< | 左移 | 各二进位全部左移若干位,高位丢弃,低位补 0 |
>> | 右移 | 各二进位全部右移若干位,对无符号数,高位补 0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补 0(逻辑右移) |
Java右移:
/** * Java使用 >> 表示算术右移 补符号位 * >>> 表示逻辑右移 补0 */
-
推导:
- 使用异或运算的性质 “相同为0 不同为1”
- 统计异或运算后的数有多少位 1
-
代码
class Solution { public int hammingDistance(int x, int y) { int result = 0 ; int XOR = x ^ y; while (XOR != 0) { result += XOR & 1; XOR >>>= 1; } return result; } }
这篇关于「Leetcode-算法_Easy461」通过「简单」题目学习位运算的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27Nacos多环境配置学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos配置中心学习入门指南
- 2024-12-27Nacos配置中心学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos初识学习入门:轻松掌握服务发现与配置管理
- 2024-12-27Nacos初识学习入门:轻松掌握Nacos基础操作
- 2024-12-27Nacos多环境配置学习入门