【详解】位运算符:位逻辑运算符,位移运算符(<<左移,>>右移)

本文详细介绍了位运算符的使用方法,包括位逻辑运算符(如按位与、按位或、异或、取反)及位移运算符(左移、右移、无符号右移)。通过具体例子展示了如何进行位运算,适用于初学者了解位运算的基本概念。

        位运算符包括位逻辑运算符位移运算符。最近做算法的时候经常用到,现在来总结下。

        重点掌握的是 左移 << ,右移 >> 。

1.位逻辑运算符

那么位逻辑运算符怎么计算的呢?先看下位逻辑运算参照表:

0代表假,1代表真。

A&B:只有A、B同时为1的时候,结果为1。A、B其中一个为0,或都为0的时候,结果为0

A|B:A、B其中一个为1,或者都为1的时候,结果为1;A、B都为0的时候,结果为0

A^B:A、B的值相同的时候,则为0,A、B值不同的时候,结果为1

~A:A、B值相同结果为1,A,B值不同结果为0

 ①按位与&运算:全为1,结果为1

 ②按位或 | 运算:A、B其中一个为1,或者都为1的时候,结果为1;A、B都为0的时候,结果为0

 

 ③异或运算:A、B的值相同的时候,则为0,A、B值不同的时候,结果为1

 ④取反运算:1变0,0变1

 ⑤位逻辑运算也可以使用逻辑运算

2.位移运算符

① << 左移

举例:

1<<1:1左移1位,将1的二进制位所有的往左移一位。

1<<2:1左移2位,将1的二进制位所有的往左移两位

a<< n,a左移n位,将a的二进制位左移n位,相当于a*(2^n),a乘2的n次方。

 同样,short a = 9115,左移1位,左移2位。

采用高位溢出,低位补0的情况。

② >> 右移

举例:

32768>>1:1右移1位,将32768的二进制位所有的往左移一位。

32768>>2:1右移2位,将32768的二进制位所有的往左移两位.

a>> n,a右移n位,将a的二进制位右n位,相当于a/(2^n),a除以2的n次方。

负数的话,高位要0变1.

 ③ >>> 无符号右移:高位补0。byte short不适合做无符号右移。

  无符号右移规则和右移运算是一样的,只是填充时不管左边的数字是正是负都用0来填充,无符号右移运算只针对负数计算。

测试:

 public static void main(String[] args) {
        int a = 24;
        System.out.println("a右移2位:" + (a >> 2));
        System.out.println("a左移2位:" + (a << 2));
        System.out.println("a无符号右移:" + (a >>> 2));
    }

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值