K
kiki19
Unregistered / Unconfirmed
GUEST, unregistred user!
java编程思想上的例子
public class URShift {
public static void main(String[] args){
int i=-1;
i>>>=10;
System.out.println(i);
long l=-1;
l>>>=10;
System.out.println(l);
short s=-1;
s>>>=10;
System.out.println(s);
byte b=-1;
b>>>=10;
System.out.println(b);
b=-1;
System.out.print(b>>>10);
}
}
结果为:
4194303
18014398509481983
-1
-1
4194303
-1转为二进制是1111111111111111111111111111111111111111111111111111111111111111,
在左边上十个零,因为整型是32位,从左往右取32位,是0000000001111111111111111111111,然后转为十进制,正好是4194303
还有点疑问,byte是8位,就是只取八位,就是00000000,转为十进制就是零了,怎么会是-1??
译注:超过容量大小的高位会被截去,这种情况下会得到-1,
可我怎么截也不是-1?
public class URShift {
public static void main(String[] args){
int i=-1;
i>>>=10;
System.out.println(i);
long l=-1;
l>>>=10;
System.out.println(l);
short s=-1;
s>>>=10;
System.out.println(s);
byte b=-1;
b>>>=10;
System.out.println(b);
b=-1;
System.out.print(b>>>10);
}
}
结果为:
4194303
18014398509481983
-1
-1
4194303
-1转为二进制是1111111111111111111111111111111111111111111111111111111111111111,
在左边上十个零,因为整型是32位,从左往右取32位,是0000000001111111111111111111111,然后转为十进制,正好是4194303
还有点疑问,byte是8位,就是只取八位,就是00000000,转为十进制就是零了,怎么会是-1??
译注:超过容量大小的高位会被截去,这种情况下会得到-1,
可我怎么截也不是-1?