为什么移位运算符用在byte和short时得不到预想的结果???急

yahan0904 2011-12-05 06:10:37
//:Shift.java
public class Shift{
public static void main(String[] args){
int i=-1;
System.out.println(Integer.toBinaryString(i));
i>>>=10;
System.out.println(Integer.toBinaryString(i));
long l=-1;
System.out.println(Integer.toBinaryString(l));
l>>>=10;
System.out.println(Integer.toBinaryString(l));
short s=-1;
System.out.println(Integer.toBinaryString(s));
s>>>=10;
System.out.println(Integer.toBinaryString(s));
byte b=-1;
System.out.println(Integer.toBinaryString(b));
b>>>=10;
System.out.println(Integer.toBinaryString(b));
b=-1;
System.out.println(Integer.toBinaryString(b));
System.out.println(Integer.toBinaryString(b>>>10));


}
}

/*output:
11111111111111111111111111111111
1111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
1111111111111111111111
*/
在以上的例子中为什么short的s和byte的b操作后所产生的结果不是预期结果呢???

...全文
94 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yahan0904 2011-12-08
  • 打赏
  • 举报
回复
在java中short和byte都是32位的,如果用移位操作,那么结果应该和int是一样的,可是输出结果却不一样,不明白是怎么回事
  • 打赏
  • 举报
回复
你的预期是什么?

51,408

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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