usage of >>>、>> and << operators

//看代码就可以了解- -!我就不多说了。现在网上关于这三个操作符有很多资料,但大都不全,或说的抽象,希望下面这种代码式讲解对大家有用。

package org.penetrate.www.se.base.operator;

public class OperatorStudy {
    public static void main(String[] args) {
        // usage of ++/--
        int a, b = 6, c = 7;
        a = b++ + c++;
        System.out.println("a:" + a + "/t" + "b:" + b + "/t" + "c:" + c + "/t");
//result:a:13    b:7    c:8
        a = 0;
        b = 6;
        c = 7;
        a = b++ + c++;
        System.out.println("a:" + a + "/t" + "b:" + b + "/t" + "c:" + c + "/t");
//result:a:13    b:7    c:8    
        /*
         * usage of >> & >>>.>>、<<为有符号位移运算符,而>>>为无符号位移运算符
         * 首先,标准下2进制数值以“符号位+数值位”表示.
         * x >>> y:将x换算成补码的形式,符号位与数值位都向右移(y mod 位数)个位,新位补0,出位抛弃.
         * x >> y:将x换算成补码的形式,符号位不变,数值位向右移(y mod 位数)个位,新位补符号位值,出位抛弃.
         * x << y:将x换算成补码的形式,符号位不变,数值位向左移(y mod 位数)个位,新位补符号位值,出位抛弃.
         * note:(y mod 位数)这个在后台的操作会强制转换(y mod 位数)为int.
         */
        //-----------------------------------------------------------------
        int x = 32;
        x = x >>> 5;
        System.out.println(x);//result:1
        x = 32;
        x = x >>> 5;
        System.out.println(x);//result:1
        x = 32;
        x = x >>> 32;
        System.out.println(x);//result:32
        x=-1;
        x=x>>>1;
        System.out.println(x);//result:2147483647
        short z=32;
        z=(short) (z>>>5);
        System.out.println(z);//result:1
        long l=32;
        l=l>>>64;
        System.out.println(l);//result:32
        // note:<<< is not a operator
        //-----------------------------------------------------------------
        x = -32;
        x = x >> 2;
        System.out.println(x);//result:-8
        byte y = 32;
        y = (byte)(y >> 33);
        System.out.println(y);//result:16
        x=-5;
        x=x>>1;
        System.out.println(x);//result:-3
        //-----------------------------------------------------------------
        x=-32;
        x=x<<33;
        System.out.println(x);//result:-64
        x=32;
        x=x<<33;
        System.out.println(x);//result:64
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值