Java基本语法——左移右移位运算符的使用

在这里插入图片描述
举例左移:21 左移两位:21 << 2;
0001 0101 (21) -----0101 0100 (21 * 2^2)
规律:每向左移一位,相当于再这个数的基础上乘以一个2

class BitTest{
    public static void main(String[] args) {
        int i = 21;
        i = i << 2;
        System.out.println(i);
    }
    //i = 84
}

经典面试题:最高效的方式计算2 * 8? 2 <<3,或者 8 >> 1

public class BitTest {
    public static void main(String[] args) {
        int m = 12;
        int n = 5;
        System.out.println("m & n :" + (m & n));
        //0为false 1为true  1100 & 0101 = 0100
        System.out.println("m | n :" + (m | n));
        //同理  1100 | 0101 = 1101
        System.out.println("m ^ n :" + (m ^ n));
        //相同为0 相异为1  1100 ^ 0101 = 1001
    }
}

~按位取反就是将操作数的二进制表达式的每一位进行取反计算
运算举例:
比如我的计算机时32位的,计算~5的值,过程如下:
5转换成二进制就是
0000 0000 0000 0000 0000 0000 0000 0101;
~5就是:
1111 1111 1111 1111 1111 1111 1111 1010;
即结果为-6。

拓展: !5 = 0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值