我在看别人的程序中看到的,ob[0] = Digit[(ib >>> 4) & 0X0F],
(b2iu(input[j + 1]) << 8),i >>>= 8,我只考的其中的几句,整个程序太长了。

解决方案 »

  1.   

    能具体解释一下吗?>>,>>>,>>>=分别的作用
      

  2.   

    “>>”是普通的右移。例如:b=a>>8;
    “>>>”是无符号右移。仍然类似:b=a>>>8;
    带有“=”的和“+=”类似,形式是:a>>=8;
      

  3.   

    i = 50;
    System.out.println(Integer.toBinaryString(i)); /* i的2进制表示 */
    System.out.println(Integer.toBinaryString(i>>1)); /* >>右移位运算符:二进制数字整体向右移动(1)位,相当于去掉最末尾数字 */
    System.out.println(Integer.toBinaryString(i>>>1)); /* >>>无符号右移位运算符:与>>基本相似 */
      

  4.   

    >>是有符号右移操作符,若符号为正则在高位插入0,或符号为负则在高位插入1。
    >>>是无符号右移操作符,无论正负,都在高位插入0。
    >>>=使用时,会将操作符左边的值会移动由右边的值指定的位数,再将得到的结果赋给左边的变量。但如果对byte或short值进行这样的位移运算,得到的可能不是正确的结果。它们会先被转换成int型,再进行右移操作,然后被截断,赋给原来的类型,在这种情况下可能得到-1的结果。
    例:
    byte b = -1;
    System.out.println(Integer.toBinaryString(b));
    b >>>= 10;
    System.out.println(Integer.toBinaryString(b));
    其输出的结果:
    11111111111111111111111111111111
    11111111111111111111111111111111
    这显然不是我们想要的。
      

  5.   

    >> 和>>>在对正数进行移位的效果是一样的,但是对于负数的话>>移位完成之后高位空出会添1,而>>>会添0