zoukankan      html  css  js  c++  java
  • 关于java中的char, byte, short的移位操作

    Java in think中有下面一句话:

    若对char,byte 或者short 进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的5 个低位才会用到。这样可防止我们在一个int 数里移动不切实际的位数。

    对上面那句话的理解是:移位操作符操作的对象是二进制的"位",int类型是32位,也就是2的32次幂。如果移动32位以上,原来的数的信息会全部消失,这样也就没有什么意义了。
    所以上面的“只有右侧的5个低位才会有用”说的是:移位操作符右端的那个数(化成二进制)的低五位才有用,即x<<y,是指y的低5位才有用,即不能大于32。对于long也是同样道理。

    因此,如果对一个int型进行移位,x<<y;
    当y小于32时,移位后的结果一般都在能表示的范围,这时就先把y化成二进制数,然后取该二进制数的低5位,再把这5位化成十进制,此时这个十进制就是要对X移动的位数。

    例如: int a = 140;
    System.out.println(Integer.toBinaryString(a << 34));
    上面这个语句的执行过程是:
    先把a化成二进制数:1000 1100
    执行语句 a << 34时,先把34化成二进制 10 0010,对该二进制数取低5位0 0010,化成十进制数2,所以实际上是对a左移2位。

    现在地球人都知道结果是: 10 0011 0000

  • 相关阅读:
    js 获取时间差
    linq 两个list合并处理,并分组
    单例模式 双锁
    2018年的读书清单
    感悟
    asp.net使用Microsoft.mshtml提取网页标题等解析网页
    //利用反射快速给Model实体赋值
    C# url接口调用
    多字段动态查询
    对图片的操作
  • 原文地址:https://www.cnblogs.com/holly/p/2381270.html
Copyright © 2011-2022 走看看