位移运算,朋友们进来看看 (100分)

  • 主题发起人 主题发起人 kiki19
  • 开始时间 开始时间
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?
 
int64 的定义是 -2^63..2^63-1 ,
00 00 00 00 00 00 00 00 (H) - 01 (H) 当然就是 FF FF FF FF FF FF FF FF (H) 了。
数制定义好后,是不能中间截一段的,因为还有符号位啊。
 
计算机中的数字不管是什么都是01序列,因此你需要先看看数制在计算机中是如何保存的!
例如向补码,反码等等的概念搞清楚了,理解这个就很简单了,否则怎么说你也会糊涂的!
 
多人接受答案了。
 
后退
顶部