求高手指导,小弟刚入手JAVA,专业非计算机, int i=-1;
int c=i>>>2;
System.out.println(c);
System.out.println(Integer.toHexString(c))
为什么运算出来,不一样啊,int i=-1;
int c=i>>>2;
System.out.println(c); 结果是1073741823,什么原因?为什么不是-0.25,因为向右移动一位,相当于除以2,求教!!!
int c=i>>>2;
System.out.println(c);
System.out.println(Integer.toHexString(c))
为什么运算出来,不一样啊,int i=-1;
int c=i>>>2;
System.out.println(c); 结果是1073741823,什么原因?为什么不是-0.25,因为向右移动一位,相当于除以2,求教!!!
-1 = 1...1(32个1)
右移后1...1(30个1)前两位补为0
由于最高位变成0,所以不是负数
所以不存在负数
lz可以试试>>有符号的右移位操作符