码迷,mamicode.com
首页 > 其他好文 > 详细

位运算符“<<”,“>>”,“>>>”的区别。

时间:2020-03-29 10:26:34      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:结果   负数   class   反码   style   运算   color   print   nbsp   

1.左移"<<",无论是正数还是负数,低位都补0。

        byte a = 11;   
        byte b = -11;
        System.out.println("a = "+(a << 2));
        System.out.println("b = "+(b << 2));

(byte为1个字节)

正数:11 

     原码:0000 1011

     左移:0010 1100

     结果:44

负数:-11

      原码:1000 1011

      反码:1111 0100

      补码: 1111 0101

     左移:  1101 0100

    补码的补码(原码):1010 1100

    结果:-44

2.右移:“>>”,正数高位补0,负数高位补1.

        byte a = 13;   
        byte b = -13;
        System.out.println("a = "+(a >> 2));
        System.out.println("b = "+(b >> 2));

  正数:13

     原码: 0000 1101

     右移: 0000 0011

     结果: 3

负数:-13

    原码:1000 1101

    反码: 1111 0010

    补码: 1111 0011

    右移: 1111 1100

    补码的补码:1000 0100

    结果:-4

3.右移 “>>>”。为无符号右移,无论该数为正还是为负高位都为0.

        int a = 13;
        int b = -13;
        System.out.println("a = "+(a >>> 2));
        System.out.println("b = "+(b >>> 2));

 正数:13

       原码:00000000 00000000 00000000 00001101

       右移:00000000 00000000 00000000 00000011

       结果为:3

负数:-13(这个补码右移完后就是结果,不要再求补码)

       原码:10000000 00000000 00000000 00001101

        反码:11111111 11111111 11111111 11110010

       补码: 11111111 11111111 11111111 11110011

       右移: 00111111 11111111 11111111 11111100 

       结果:1073741820

  

位运算符“<<”,“>>”,“>>>”的区别。

标签:结果   负数   class   反码   style   运算   color   print   nbsp   

原文地址:https://www.cnblogs.com/YangK123/p/12591008.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!