位运算(上)

位运算符

1.基础知识

  • 位运算符是对操作数的二进制进行运算
  • 逻辑运算符操作数和计算结果都是boolean型,而位运算符的操作数和技术结果都是整型

1.1位逻辑运算符

1.1.1 基础说明

&: (和&&的逻辑用法一致)

|:(和||的逻辑用法一致)

~:(和!的逻辑用法一致)

^:(异或逻辑,记忆方法:”异☞不同,当不同的时候做或运算“/”不同为1,相同为0“)也可以理解为不进位加法,1+1=0;0+0=0;1+0=1

代码展示

int a=3;
int b=4;
System.out.println(a&b);//0
System.out.println(a|b);//7
System.out.println(a^b);//7
System.out.println(~a);//-4
1.1.2 解释说明:

1.2 位移运算符

1.2.1 基础说明
<< //左移(原则:高位溢出,低位补0)
>> //右移(原则:低位溢出,有符号数高位:正数补0,负数补1)
>>>//无符号数右移(原则:低位溢出,无符号数高位:补0)

代码展示

 int a=3;
 System.out.println(a<<2);//12
 int b=-3;
 System.out.println(b<<2);//-12
 int c=8;
 System.out.println(c>>2);//2
 int d=-8;
 System.out.println(d>>2);//-2
 int e=-8;
System.out.println(e>>>2);//1073741822
 int f=8;
 System.out.println(f>>>2);//2

1.2.2解释说明





正数的无符号右移和右移规则一致

2.常用算法

2.1 奇偶判断
方法:要判断的数和1相&;
//奇偶判断:与1相与进行位运算,得数为1是奇数,得数是0为偶数
int x=3;
int y=8;
System.out.println(x&1);
System.out.println(y&1);
2.2 两数交换
方法:一个数对自己异或一次,再异或另一个数,结果为另一个数(A异或A=0,A异或0=A)
 int n=10;
     int m=5;
     System.out.println("n="+n+",m="+m);
     swap(n,m);
    }
    public static void swap(int a,int b){
        a=a^b;
        b=a^b;//b=a^b^b=a
        a=a^b;//a=a^b^a=b
        System.out.println("n="+a+",m="+b);
    }
2.3 获取二进制第n位是1还是0
方法:和1相与(经过左移n-1位)
  Scanner scanner=new Scanner(System.in);
        int m = scanner.nextInt();
        int n=scanner.nextInt();
        judgementBit(m,n);
        scanner.close();
    }
    public static void judgementBit(int m,int n){
        if((m&(1<<(n-1)))==0){
            System.out.println("m的二进制第n位为0");
        }else
            System.out.println("m的二进制第n位为1");
    }
2.4 不用判断语句,求整数的绝对值
方法:
  • 性质补充:A^(-1)=~A
  • 若A为int型,A为正数,A>>>31=0、A>>31=0;A为负数,A>>>31=1、A>>31=-1(不理解看前面的自己举个数字计算一下,前面有个错误是int型应该补为32位但是基本思路和流程没有错误)
  • 补码的真值,取反加1
  • 公式总结:(A^(A>>31))+(A>>>31))
public static void main(String[] args) {
        abs(100);
        abs(-19);
    }
    public static void abs(int a){
        System.out.println("a的绝对值="+((a^(a>>31))+(a>>>31)));
    }
posted @   cxy领域展开  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示