博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode Hamming Distance
阅读量:5088 次
发布时间:2019-06-13

本文共 1146 字,大约阅读时间需要 3 分钟。

The between two integers is the number of positions at which the corresponding bits are different.

Given two integers x and y, calculate the Hamming distance.

Note:

0 ≤ x, y < 231.

Example:

Input: x = 1, y = 4Output: 2Explanation:1   (0 0 0 1)4   (0 1 0 0)       ↑   ↑The above arrows point to positions where the corresponding bits are different.
class Solution {    public int hammingDistance(int x, int y) {        int xor = x ^ y, count = 0;        for (int i=0;i<32;i++) count += (xor >> i) & 1;        return count;    }}

 涉及到位运算。

java位运算:Java提供的位运算符有:左移( << )、右移( >> ) 、无符号右移( >>> ) 、位与( & ) 、位或( | )、位非( ~ )、位异或( ^ ),除了位非( ~ )是一元操作符外,其它的都是二元操作符。

1. m<<n的含义:把整数m表示的二进制数左移n位,高位移出n位都舍弃,低位补0.  (此时将会出现正数变成负数的可能)

    m<<n即在数字没有溢出的前提下,对于正数和负数,左移n位都相当于m乘以2的n次方.

2. m>>n的含义:把整数m表示的二进制数右移n位,m为正数,高位全部补0;m为负数,高位全部补1。

 m>>n即相当于m除以2的n次方,得到的为整数时,即为结果。如果结果为小数,此时会出现两种情况:

    如果m为正数,得到的商会无条件 的舍弃小数位;如果m为负数,舍弃小数部分,然后把整数部分加+1得到位移后的值。

3. m>>>n:整数m表示的二进制右移n位,不论正负数,高位都补0。

4. ~ 按位取反操作符,对每个二进制位的内容求反,即1变成0,0变成1。

5. & 位与操作符,对应的二进制位进行与操作,两个都为1才为1,其他情况均为0

6.  | 位或操作符,对应的二进制位进行或操作,两个都为0才为0,其他情况均为1。

7. ^ 异或操作符,相同位值为0 否则为1

转载于:https://www.cnblogs.com/zzmher/p/7710692.html

你可能感兴趣的文章
d3.js:数据可视化利器之 交互行为:响应DOM事件
查看>>
微信小程序(18)-- 自定义头部导航栏
查看>>
CSS继承—深入剖析
查看>>
IOS开发中的分享到邮件
查看>>
Resharper插件的使用
查看>>
unity中UI的屏幕自适应代码
查看>>
lagou数据爬取
查看>>
井底飞天
查看>>
<a>标签实现锚点跳跃,<a>标签实现href不跳跃另外加事件(ref传参)
查看>>
C# async/await异步操作:异步执行方法封装
查看>>
display:inline、block、inline-block的区别
查看>>
geotrellis使用(二十五)将Geotrellis移植到spark2.0
查看>>
字符串
查看>>
SystemV-IPC
查看>>
NPOI 操作Word
查看>>
如何在Ubuntu上创建及管理LXC容器?
查看>>
如何在 VMware 上安装 CentOS 6.8
查看>>
js-权威指南-Web套接字
查看>>
C# 笔记——数据类型
查看>>
http模块
查看>>