位运算相关

位运算符

&:按位与。 

|:按位或。

~:按位非。

^:按位异或      

<<:左位移运算符。

>>:右位移运算符。

<<<:无符号右移运算符。


1.   按位与(&)

按位与的运算规则

操作数1

0

0

1

1

操作数2

0

1

0

1

按位与

0

0

0

1


2. 按位或(|)

按位或的运算规则

操作数1

0

0

1

1

操作数2

0

1

0

1

按位或

0

1

1

1


3.按位非(~)

按位非的运算规则

操作数

0

1

按位或

1

0



4. 按位异或(^)

按位异或的运算规则

操作数1

0

0

1

1

操作数2

0

1

0

1

按位异或

0

1

1

0



1、如何快速找出一个二进制数中包含多少个1

假如数为num, num & (num - 1)可以快速地移除最右边的bit 1, 一直循环到num为0, 总的循环数就是num中bit 1的个数

public static int getBit1Sum(int input){
        int res = 0;
        while (input!=0){
            res++;
            input &= (input-1);
        }
        return res;
    }

2、相关引申  Hamming Distance 汉明距离

int GethammingDistance(int x, int y) {
        int res = 0, exc = x ^ y;
        while (exc) {
            ++res;
            exc &= (exc - 1);
        }
        return res;
    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值