关于java的逻辑移位和算数移位

关于java中的移位,例如


int a=-8;

System.out.println(a>>>33);//2147483644

System.out.println(a>>>1); //2147483644

这里我采用了逻辑右移(无符号右移)为例,对-8进行逻辑右移,移动33位和移动1位的效果是一样的,其原因是移动33位时对其进行取模操作(与32相除的余数),对其余数进行移位,请问Java中这样设计的理由是什么?为什么不是当逻辑右移超过32位时,其结果应该为0,这样不是更符合常理吗?


一只甜甜圈
浏览 465回答 1
1回答

潇湘沐

你一次移位超过类型的最大长度以得到0,为什么不直接置为0呢?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java