您的位置:首页 > 编程语言 > Java开发

java的移位运算

2011-08-04 09:49 218 查看

">>>"逻辑右移,左边添加0

注意 char,byte和short在逻辑右移时会先转换成int,然后在int的基础上逻辑右移。

long型的移位

long型移位很诡异,不知道怎么回事,

        long l = -21474837000L;

        System.out.println(l);

        BitManipulation.pBinLong("l", l);

        l >>>= 3;

        System.out.println(l);

        BitManipulation.pBinLong("l", l);

1111111111111111111111011111100011111111111111111111110111111000

1101111111111111111111111011111111011111111111111111111110111111

如果, l 赋值时为一个int范围内的数,貌似前后32个bit内容一样, 移位也是基于32位移, 前后32位各自分别右移3位

而,如果l赋值为超过int范围的值时, 不知道怎么移位的, 如上例好像在逻辑右移3位, 好像在前后各个32位前移进来110;

而且, 不管逻辑右移还是右移, 得到的二进制数一样, 但是逻辑右移后的数 会解释成无符号数。

why
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java byte