Java中的位运算符

xiaoxiao2021-02-28  15

        

        java中的位运算符用来对二进制位进行操作,包括右移(>>)、左移(<<)、无符号右移(>>>)、按位取反(~)、按位与(&)、按位或(|)、异或(^)等,这些运算符只能对整型和字符型数据进行操作。

 

对于整型数据(计算机中正数通过原码表示,负数是用反码表示

1、右移:若为正数高位补零,若为负数高位补一

       (1)128>>1 得到 64

        0000 0000 0000 0000 0000 0000 1000 0000  128

    =>  0000 0000 0000 0000 0000 0000 0100 0000   64

     (2)-256>>4 得到 -16

        (原码)1000 0000 0000 0000 0000 0001 0000 0000 -256

        (补码)1111 1111 1111 1111 1111 1111 0000 0000 (计算机中的表示形式)

    =>  (补码)1111 1111 1111 1111 1111 1111 1111 0000 

        (原码)1000 0000 0000 0000 0000 0000 0001 0000 -16

2、左移:低位补零

             5<<2 得到 20

             0000 0000 0000 0000 0000 0000 0000 0101   5

    =>    0000 0000 0000 0000 0000 0000 0001 0100   20

3、无符号右移(逻辑右移):高位补零

              -5>>>1 得到  2147483645

            (原码)1000 0000 0000 0000 0000 0000 0000 0101   -5

            (补码)1111 1111 1111 1111 1111 1111 1111 1011

    =>   (补码)0111 1111 1111 1111 1111 1111 1111 1101

            (原码)0111 1111 1111 1111 1111 1111 1111 1101   2147483645

4、按位取反:一元运算符

5、按位与:对两个整型操作数中对应位执行布尔代数,两个位都为1时输出1,否则0。

6、按位或:对两个整型操作数中对应位执行布尔代数,两个位都为0时输出0,否则1

7、异或:对两个整型操作数中对应位执行布尔代数,两个位相等0,不等1

转载请注明原文地址: https://www.6miu.com/read-1899965.html

最新回复(0)