美文网首页位操作
Java中的三种位移运算符

Java中的三种位移运算符

作者: Ggx的代码之旅 | 来源:发表于2016-08-21 14:09 被阅读266次

    一直以来位移运算符都用的很少,所以一直忽略了它。不过今天突然明白了规则于是乎就上网翻看了一下别人的一些博客,验证了自己的想法,没想到还真是这样的,很是欣慰呀,至少以后在看到此类东西不会一头雾水了。以下内容包含网上查找的内容

    1. << 左移运算符
      表达式:value << num
      左移的规则
      丢弃最高位,0补最低位
      按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
      当左移的运算数是int 类型时,每移动1位它的第31位就要被移出并且丢弃;
      当左移的运算数是long 类型时,每移动1位它的第63位就要被移出并且丢弃。
      当左移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型。
      计算过程
      举例:8是int型的情况下8<<3结果等于64,相当于8×2的3次方
      把8转换为二进制数字0000 0000 0000 0000 0000 0000 0000 1000,
      把这组数字左移3位则得到的最终结果是0000 0000 0000 0000 0000 0000 0100 0000,

    2. >> 右移运算符
      表达式:value >> num
      左移的规则
      符号位不变,左边补上符号位
      按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1
      当右移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型。
      如果要移走的值为负数,每一次右移都在左边补1,如果要移走的值为正数,每一次右移都在左边补0,这叫做符号位扩展(保留符号位),在进行右移操作时用来保持负数的符号。
      计算过程
      35 >> 2(35为int型)35 >> 2结果等于8,相当于8/2的2次方
      35转换为二进制:0000 0000 0000 0000 0000 0000 0010 0011
      把低位的最后两个数字移出:0000 0000 0000 0000 0000 0000 0000 1000
      转换为十进制: 8

    3. >>> 无符号右移运算符
      表达式:value >>> num
      无符号右移的规则只记住一点:忽略了符号位扩展,0补最高位
      无符号右移运算符>>> 只是对32位和64位的值有意义

    补充一下之前欠缺的:0x8f,此16进制数转换为二进制位1000 1111,
    通常颜色用16进制数
    例如:0xFBFFFFFF,从左往右FB表示透明度,FFFFFF表示颜色
    用二进制表示就是:
    1111 1011 1111 1111 1111 1111

    相关文章

      网友评论

        本文标题:Java中的三种位移运算符

        本文链接:https://www.haomeiwen.com/subject/nsxwsttx.html