Java 位运算笔记

前言

位运算符主要针对二进制位进行运算,由于计算机的数据都是以二进制存储的,所以位运算的效率极高。

位运算主要包括了:“与”,“或”,“非”,“异或”。

一、Java 位运算:与(&)

在 Java 中与运算用符号“&”表示,其运算规则描述如下:

两个操作数对应位置的位都为1,结果才为1,否者结果为0

代码演示如下:

public class BitwiseOperation {
    public static void main(String[] args){
        int a = 13;
        int b = 17;
        //与(都是1为1,其它为0)
        int c = a & b;
        printNum(a);
        printNum(b);
        System.out.println();
        printNum(c);
    }

    /**
     * 输出此数字及其32位二进制字符串
     * @param num
     */
    public static void printNum(int num){
        StringBuilder numStr = new StringBuilder(Integer.toBinaryString(num));
        while (numStr.length() < 32){
            numStr.insert(0, "0");
        }
        System.out.println(num + "\t\t" + numStr);
    }
}

输出结果如下:

13		00000000000000000000000000001101
17		00000000000000000000000000010001

1		00000000000000000000000000000001

二、Java 位运算:或(|)

在 Java 中或运算用符号“|”表示,其运算规则描述如下:

两个操作数对应位置的位只要有一个为1,结果就为1,两个位都为0结果为0

代码演示如下:

public class BitwiseOperation {
    public static void main(String[] args){
        int a = 13;
        int b = 17;
        //或(只要有一个是1就为1,都是0为0)
        int d = a | b;
        printNum(a);
        printNum(b);
        System.out.println();
        printNum(d);
    }

    /**
     * 输出此数字及其32位二进制字符串
     * @param num
     */
    public static void printNum(int num){
        StringBuilder numStr = new StringBuilder(Integer.toBinaryString(num));
        while (numStr.length() < 32){
            numStr.insert(0, "0");
        }
        System.out.println(num + "\t\t" + numStr);
    }
}

输出结果如下:

13		00000000000000000000000000001101
17		00000000000000000000000000010001

29		00000000000000000000000000011101

三、Java 位运算:非(~)

在 Java 中非运算用符号“~”表示,其运算规则描述如下:

操作数位为1,结果为0,位为0,结果为1

代码演示如下:

public class BitwiseOperation {
    public static void main(String[] args){
        int a = 13;
        //非(是1为0,是0为1)
        int e = ~ a;
        printNum(a);
        System.out.println();
        printNum(e);
    }

    /**
     * 输出此数字及其32位二进制字符串
     * @param num
     */
    public static void printNum(int num){
        StringBuilder numStr = new StringBuilder(Integer.toBinaryString(num));
        while (numStr.length() < 32){
            numStr.insert(0, "0");
        }
        System.out.println(num + "\t\t" + numStr);
    }
}

输出结果如下:

13		00000000000000000000000000001101

-14		11111111111111111111111111110010

四、Java 位运算:异或(^)

在 Java 中异或运算用符号“^”表示,其运算规则描述如下:

两个操作数位相同,结果为0,位不同,结果为1

代码演示如下:

public class BitwiseOperation {
    public static void main(String[] args){
        int a = 13;
        int b = 17;
        //异或(相同为0,不同为1)
        int f = a ^ b;
        printNum(a);
        printNum(b);
        System.out.println();
        printNum(f);
    }

    /**
     * 输出此数字及其32位二进制字符串
     * @param num
     */
    public static void printNum(int num){
        StringBuilder numStr = new StringBuilder(Integer.toBinaryString(num));
        while (numStr.length() < 32){
            numStr.insert(0, "0");
        }
        System.out.println(num + "\t\t" + numStr);
    }
}

输出结果如下:

13		00000000000000000000000000001101
17		00000000000000000000000000010001

28		00000000000000000000000000011100
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值