java位运算符详解

java位运算中主要需注意两点:
  1. 十进制怎么转为二进制以及二进制的计算
  2. 源码、反码、补码如何得到
  3. 十进制加法为逢十进一;二进制为逢二进一
  4. 负数在计算机中是以补码的形式表示的 


以下为java位运算的例子及解析

public static void main(String[] args) {
        /* 2 0010
         * 3 0011
         * 1 0001
         * ^ 亦或运算,同则为0,异则为1
         */
        int a = 2^3;
        System.out.println("^ -------------" + String.valueOf(a));

        /* 2 0010
         * 3 0011
         * 2 0010
         * & 只要一个是0,就为0,即全部为1时才会是1
         */
        int b = 2&3;
        System.out.println("& -------------" + String.valueOf(b));

        /* 2  0000 0010
         * 16 0001 0000
         * x << y 将x转成二进制后,想左移y位
         *
         */
        int c = 2 << 3;
        System.out.println("<< -------------" + String.valueOf(c));

        /* 2 0010
         * 1 0001
         * x >> y 将x转成二进制后,想右移y位,移到最右边后都为0,例如 2>>2 2>>3 ....都为0
         */
        System.out.println(">> -------------" +(String.valueOf(2 >> 1)));
        /* 16 0001 0000
         * 4  0000 0100
         * x >> y 将x转成二进制后,无符号右移,忽略符号位,空位0补齐,移到最右边后都为0
         *
         * -16     10000000 00010000
         * -16反码  11111111 11101111
         * -16补码  11111111 11110000
         * 所以向右移动两位后为 11111111 11111100
         * 结果 1073741820 右移后的结果补全32位后的结果,由于是负数,所有是以1来补全的
         * 正数在计算机中是以二进制来保存,负数是以补码的形式表示的
         * 反码的计算方式: 源码的符号位不变,其他位取反;
         * 补码的计算方式: 反码加一
         * 由于正数是以二进制表示,所以空位以0来补充,而负数是以补码形式来表示的,所以空位以1来补充
         * 为什么是32位:直接用哪个数字来计算的,默认其类型为int,int类型4个字节,32位
         */
        int d = 16 >>> 2;
        System.out.println(">>> ------------" +String.valueOf(d));
        System.out.println(">>> ------------" +String.valueOf(-16 >>> 2));

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值