求高手指导,小弟刚入手JAVA,专业非计算机

ljl623786058 2012-08-10 11:16:21
求高手指导,小弟刚入手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,求教!!!


...全文
170 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wonkju 2012-08-11
  • 打赏
  • 举报
回复
你写成二进制就明白了,LZ应该懂负数的二进制表达式吧。
skyWalker_ONLY 2012-08-11
  • 打赏
  • 举报
回复
开始时i的符号位是1,表示负数,当左移两位(无符号移位)时,最高位补0,这样得到的结果就是正数了,就是楼主看到的结果
Sad4This 2012-08-10
  • 打赏
  • 举报
回复
>>>右移位操作符,无论正负高位都插入0
-1 = 1...1(32个1)
右移后1...1(30个1)前两位补为0
由于最高位变成0,所以不是负数
所以不存在负数
lz可以试试>>有符号的右移位操作符

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧