Java位运算

Java定义的位运算,应用于整数类型(int),长整型(long),短整型(short),字符型(char)和字节型(byte)等类型。

计算原理是将上述类型转换成二进制数,然后再按位计算。

假设

a = 6;(二进制:0110)

b = 2;(二进制:0010)

一、操作符(&)

1、原理:如果都是1则为1,否则为0

            a = 0110

            b = 0010

------------------------------

        a&b = 0010 (结果为2)


二、操作符(|)

1、原理:如果有一个为1则为1,否则为0

            a = 0110

            b = 0010

------------------------------

          a|b = 0110 (结果为6)


三、操作符(^)

1、原理:相同为0,不同为1

            a = 0110

            b = 0010

------------------------------

         a^b = 0100 (结果为4)


2、加密应用

一个数按位异或其他数两次,等于这个数本身(一般用于简单的加密运算)

上面c = a ^ b = 0100(结果为4),得到的结果c再异或b一次,结果:

           c = 0100

           b = 0010

------------------------------

        c^b = 0110(结果为6,等同:a ^ b ^ b = a) 


3、数据交换应用

最高效的交换两个整数(不能使用第三个变量)

a = a ^ b; // a = 6 ^ 2

b = a ^ b; // b = (6 ^ 2) ^ 2; b = 6;

a = a ^ b; // a = (6 ^ 2) ^ 6; a = 2;


四、操作符(<<)

1、原理:左移几位就是符号左边的数据乘以2的几次方。

6 << 1 = 12;等同:6 * 2(1) = 12;

6 << 2 = 24;等同:6 * 2(2) = 24;


五、操作符(>>)

1、原理:右移几位就是符号左边的数据除以2的几次方。对于高位出现的空位,原来高位是什么就用什么补这个空位。

6 >> 1 = 3;等同:6 / 2(1) = 3;

6 >> 2 = 1;等同:6 / 2(2) = 1;


五、操作符(>>>)

1、原理:无符号右移几位就是符号左边的数据除以2的几次方。对于高位出现的空位,无论原高位是什么,空位都用0补。

6 >>> 1 = 3;等同:6 / 2(1) = 3;

6 >>> 2 = 1;等同:6 / 2(2) = 1;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值