Java笔记:位运算

Posted arseneyao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java笔记:位运算相关的知识,希望对你有一定的参考价值。

一、数据存储

二进制数在内存中以补码的形式存放。正数的反码、补码均为本身。负数的反码为符号位不变且其余位取反,补码为反码+1。

 

二、位运算

①按位取反:反转操作数中的所有位。

②按位与:仅当两个操作数都是1,结果为1。否则为0。

③按位或:只要有一个操作数是1,结果为1。否则为0。

④按位异或:只有一个操作数是1,结果为1。否则为0。

⑤左移:将不包括符号位的所有数值向左移动指定次数,右边补充0。每左移一位相当于*2。

⑥右移:将不包括符号位的所有数值向右移动指定次数,左边补充0。每右移一位相当于/2。

⑦无符号右移:将包括符号位的所有数值向右移动指定次数,仅对宽度为32、64的数值有意义,更小的数值会自动提升。

 

三、示例

class Solution {
    public static void main(String[] args) {
        byte a = 42;//00101010
        byte b = 15;//00001111
        System.out.println(~a);//按位取反结果为11010101 补码为10101011
        System.out.println(a & b);//按位与结果为00001010
        System.out.println(a | b);//按位或结果为00101111
        System.out.println(a ^ b);//按位异或结果为00100101

        byte c = 64;//01000000
        System.out.println(c << 1);//左移1位结果为10000000
        System.out.println(c >> 1);//右移1位结果为00100000

        int d = -1;//11111111 111111111 111111111 111111111
        System.out.println(d >>> 24);//无符号右移24位结果为00000000 00000000 00000000 11111111
    }
}

 

以上是关于Java笔记:位运算的主要内容,如果未能解决你的问题,请参考以下文章

Java学习笔记2.3.5 运算符与表达式 - 位运算符

Java学习笔记——关于位运算符的问题

JAVA学习笔记-逻辑运算符位运算符拓展运算符

Java学习笔记——位运算符方法package包键盘输入

java笔记2之算术运算符

算法笔记:位运算