zoukankan      html  css  js  c++  java
  • Java中的<< 和 >> 和 >>> 详细分析

    <<表示左移,不分正负数,低位补0; 

    注:以下数据类型默认为byte-8位

    左移时不管正负,低位补0

    正数:r = 20 << 2

      20的二进制补码:0001 0100

      向左移动两位后:0101 0000

             结果:r = 80

    负数:r = -20 << 2

      -20 的二进制原码 :1001 0100

      -20 的二进制反码 1110 1011

      -20 的二进制补码 :1110 1100

      左移两位后的补码:1011 0000

            反码:1010 1111

            原码:1101 0000

            结果:r = -80

    >>表示右移,如果该数为正,则高位补0,若为负数,则高位补1;

    注:以下数据类型默认为byte-8位

    正数:r = 20 >> 2

      20的二进制补码:0001 0100

      向右移动两位后:0000 0101

           结果:r = 5

    负数:r = -20 >> 2

      -20 的二进制原码 :1001 0100

      -20 的二进制反码 :1110 1011

      -20 的二进制补码 :1110 1100 

      右移两位后的补码:1111 1011 

            反码:1111 1010

            原码:1000 0101

            结果:r = -5

    >>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0

    正数: r = 20 >>> 2

        的结果与 r = 20 >> 2 相同;

    负数: r = -20 >>> 2

    注:以下数据类型默认为int 32位

      -20:源码:10000000 00000000 00000000 00010100

        反码:11111111  11111111   11111111   11101011

        补码:11111111  11111111   11111111   11101100

        右移:00111111  11111111   11111111   11111011

        结果:r = 1073741819

  • 相关阅读:
    良好的三元组(求已排列好的数组中各个元素的排位)
    山理工oj 2556传说中的数据结构
    山理oj 1177 时间间隔
    山理oj1525:字符统计2
    linux常用命令
    多线程并发教程
    合理设置线程数量
    Java多线程处理任务(摘抄)
    解决2013Lost connection to MySQL server during query错误方法
    javaMail邮件发送
  • 原文地址:https://www.cnblogs.com/skyblue123/p/12633577.html
Copyright © 2011-2022 走看看