public void putLength(int vol)
{
conData[inc++] = (byte)(vol >>> 16 & 0xff);
conData[inc++] = (byte)(vol >>> 8 & 0xff);
conData[inc++] = (byte)(vol & 0xff);
}其中  vol >>> 16 & 0xff  是什么意思呢
我理解 唉 貌似理解不了 望大虾们解释解释
另外,为什么要这么做 特别是 那  >>>看这特别不习惯

解决方案 »

  1.   

    >>>这个符号是移位用的。后面的数字,>>>8表示右移位8位。
      

  2.   

    >>> 是“右移位”运算
    & 是“与”运算
    0x 开头的是指16进制的数
    至于那些运算是怎么算的就查书
      

  3.   

    >>>是逻辑右移,是不带符号位的
    对应的还有>>算数右移,是带符号位的int i = 0xFFFFFFFF;
    int i1 = i >> 1;
    int i2 = i >>> 1;
    System.out.printf("i1 = 0x%X, i2 = 0x%X", i1, i2);输出结果:i1 = 0xFFFFFFFF, i2 = 0x7FFFFFFF
      

  4.   

    >>> 是位运算(按位右移),而且高位肯定是补0的
    >>也是按位右移不过他是有符号位的&也是位运算(按位与)
    0xff是16进制,16进制很容易转成二进制再位移就清楚了
    比如
    0xff(十六进制) --> 11111111 (二进制)
    0xff >>> 3 = 00011111 = 31(十进制) = 0x1f
      

  5.   


    >>>三个的话高位肯定补0
    >>两个的话高位原来是什么就补什么。
      

  6.   

    提供一个样例,有助于理解 >>> 的用法int i = 0xABCDEF;
    byte[] bytes = new byte[3];
    bytes[0] = (byte)(i >>> 16 & 0xFF);
    bytes[1] = (byte)(i >>>  8 & 0xFF);
    bytes[2] = (byte)(i        & 0xFF);System.out.println(Integer.toHexString(bytes[0] & 0xFF));
    System.out.println(Integer.toHexString(bytes[1] & 0xFF));
    System.out.println(Integer.toHexString(bytes[2] & 0xFF));
    再提供一个样例,有助于 & 的理解int i = 0xAB;
    System.out.println(Integer.toHexString(i & 0xFF));
    System.out.println(Integer.toHexString(i));