位操作符

位操作符基础:

符号 描述 运算规则
& 全1为1
| 有1为1
~ 取反,0变1,1变0
^ 异或 异1同0
>> 右移 各二进位全部右移若干位,正数高位补0,负数高位补1
<< 左移 各二进位全部左移若干位,高位丢弃,低位补0
>>> 无符号右移 无论高位是0或1,高位全部补0

注:位操作符只能用于整型数据

位操作符的运用:

这里主要列举左移和右移位操作符的作用:

1.可以实现数的倍增和倍减.

左移n位,就是将当前的数乘以2^n, 右移n位,就是将当前的数除以2^n.

public class bitOperation {
    public static void main(String[] args) {
        int a=6,c;
        int b=a>>1;
        c=a<<1;
        System.out.println("右移一位"+b);
        System.out.println("左移一位"+c);
    }
}

输出结果为

a的二进制表达式为0110;将a进行右移一位,末位0被舍弃,正数高位补0,则b=0011,0011转换为十进制为3;将a进行左移一位,末位补0,则c=1100,1100转换为十进制12。

2.可以实现两数的互换

public class bitOperation {
    public static void main(String[] args) {
        int n=3,m=4;
        if(n !=m)
        {
            n ^=m; //n=n^m
            m ^=n; //m=m^(n^m),由交换律,得m^m^n,一个数与自己的异或值为0,任何数与0异或值不变,所以此时m=n;
            n ^=m; //n=n^m,而m=n,n=n^m^n。
        }
        System.out.println("m="+m);
        System.out.println("n="+n);
    }
}

输出结果为:

PS:计算机中数以二进制表示,这里补充说下原码、补码、反码。

正数的原码、补码、反码均相同; 负数的反码为符号位不变,其余全取反,补码为符号位不变,其余全取反,末位再加1.

posted @ 2021-12-18 20:12  hanqi  阅读(203)  评论(0编辑  收藏  举报