【算法】位运算

🥰🥰🥰来都来了,不妨点个关注叭!
👉博客主页:欢迎各位大佬!👈

在这里插入图片描述
本期内容讲解位运算有关的题目,我们一起来看看吧!首先来复习一下基础的位运算知识吧。

1. 位运算基础

【<<】左移
【>>】右移
【~】取反
【&】按位与 有0则为0
【|】按位或 有1则为1
【^】按位异或 相同为0不同为1(或者记忆为无进位相加)

如果有更好的方法,可以按照自己的方法记忆哦,不要混淆~如果需要进一步了解,可以看【Java SE】运算符期内容,再去复习,也会有不一样的收获哦~

2. 基础题目

2.1 预热题目

1> 给一个数,确定它的二进制表示中的第x位是0还是1
【(n >> x) & 1】
在这里插入图片描述
2> 将一个数n的二进制表示第x位修改为1
【n = n | (1 << x) 】
在这里插入图片描述
3> 将一个数n的二进制表示第x位修改成0
【n = n & (~(1 << x)) 】
在这里插入图片描述
4> 提取一个数n二进制中最右侧的1
【n & (-n)】
在这里插入图片描述
其实通过这个图,我们也可以发现,求一个数的补码,找到这个数最右侧的1,1的左边全部变为相反,右边不变。

5> 干掉一个数n二进制中最右侧的1
【n & (n-1)】
在这里插入图片描述

【注意事项】
需要注意运算符的优先级!!!
原则:能加括号的加括号

2.2 代码

public class Main {
    public static void main(String[] args) {
        int n = 7;
        int x = 3;
        //1.给一个数n确定它的二进制表示的第x位是0还是1
        int result_1 = (n >> x) & 1;
        System.out.println(result_1);
        //2.将一个数n的二进制表示第x位修改成1
        int result_2 = n | (1<<x);
        System.out.println(result_2);
        //3.将一个数n的二进制表示第x位修改成1
        int result_3 = n & (~(1 << x));
        System.out.println(result_3);
        //4.提取一个数n二进制中最右侧的1
        int result_4 = n & (-n);
        System.out.println(result_4);
        //5.干掉一个数n二进制中最右侧的1
        int result_5 = n & (n-1);
        System.out.println(result_5);
    }
}

2.3 按位异或【^】运算律

1.num ^ 0 = num
2.num ^ num = num
3. a^ b ^ c = a^(b ^ c)

如何理解按位异或【^】可以记忆为无进位相加和运算律中的(3)?
下面来看这个例子
奇数个1异或为1,偶数个1异或为0
在这里插入图片描述
本期内容到这结束啦,可以刷刷有关位运算的题目~加深理解哟。

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值