日期:2014-05-20  浏览次数:20676 次

在java中>>>和>>是做什么用的,是移位吗?
我在看别人的程序中看到的,ob[0]   =   Digit[(ib   > > >   4)   &   0X0F],
(b2iu(input[j   +   1])   < <   8),i   > > > =   8,我只考的其中的几句,整个程序太长了。

------解决方案--------------------
shi
------解决方案--------------------
“> > ”是普通的右移。例如:b=a> > 8;
“> > > ”是无符号右移。仍然类似:b=a> > > 8;
带有“=”的和“+=”类似,形式是:a> > =8;
------解决方案--------------------
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)); /* > > > 无符号右移位运算符:与> > 基本相似 */
------解决方案--------------------
> > 是有符号右移操作符,若符号为正则在高位插入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
这显然不是我们想要的。
------解决方案--------------------
> > 和> > > 在对正数进行移位的效果是一样的,但是对于负数的话> > 移位完成之后高位空出会添1,而> > > 会添0