zoukankan      html  css  js  c++  java
  • Java:Java的<<<移位运算符详解

    1) 左移运算(<<)

          左移就是把所有位向左移动几位

        如:   12 << 2    意思就是12向左移动两位

              12的二进制是: 0000 1100

    image

    通过这个图我们可以看出来,所有的位全都向左移动两位,然后把右边空的两个位用0补上,最左边多出的两个位去掉,最后得到的结果就是00110000  结果就是48

    我们用同样的办法算 12<<3  结果是 96

                                8<<4  结果是  128

      由此我们得出一个快速的算法    M << n   其实可以这么算   M << n  = M * 2n

     

    2) 右移运算符(>>)

     

    这个跟左移运算大体是一样的

         例: 12 >> 2

    image

    我们可以看出来右移和左移其实是一样的,但是还是有点不同的,不同点在于对于正数和负数补位的时候补的不一样,负数补1,正数补0

    如我们再做一个 –8 的    -8>>2

    image

    这里总结一下,关于负数或者正数来说,移位的时候是一样的,但是在补位的时候,如果最高位是0就补0,如果最高位是1就补1

    由此我们得出一个快速的算法    M >> n   其实可以这么算   M >> n  = M / 2n

    3)无符号右移(>>>)

         无符号右移(>>>)只对32位和64位有意义

      在移动位的时候与右移运算符的移动方式一样的,区别只在于补位的时候不管是0还是1,都补0

  • 相关阅读:
    linux磁盘管理
    yarn一直在跑一个用户为dr.who的application
    HBASE强制删除表
    Centos安装git2.2.1
    MySQL类型float double decimal的区别
    PHP的extension_dir设置问题
    opencart安装和使用PHPMailer
    在路上
    修改win10中linux子系统的root密码
    关于js for循环click事件
  • 原文地址:https://www.cnblogs.com/nhdlb/p/12007100.html
Copyright © 2011-2022 走看看