位运算应用

位运算

使两个整数相等的位更改次数

n & k:按位与运算,检查 n 和 k 的二进制位是否在相同位置都为 1。

(n & k) == k:代表将 n和k 都转换为二进制,能否将n转换为k,假如 n 为13(1110),k 为 4(0100),那么这里首先判断是否能够转换,也就是将第1、3为转换为0,则n和k保持一致

n ^ k:这个操作是按位异或,产生一个新的二进制数,表示 n 和 k 在每一位上的差异

  • 如果 n 和 k 的某一位相同(都是 0 或都是 1),异或结果该位是 0。 --相同为0
  • 如果 n 和 k 的某一位不同(一个是 1,另一个是 0),异或结果该位是 1。–不同为1

通常我们都是统计不同的个数,利用bitCount来进行处理:

Integer.bitCount(n ^ k):返回 n ^ k 的二进制表示中 1 的个数,也就是 n 需要多少次 1 变成 0 来变成 k

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值