求教JAVA LONG和INT运算结果为什么不一样

http://img.mukewang.com/599c135400017bd310850357.jpg

这是为什么呢

花儿对我笑_
浏览 3135回答 4
4回答

胜利女神在微笑

望采纳

胜利女神在微笑

是这样的,首先你要明白他这个位移运算是将10进制转换成2进制,然后进行位移,最后转成10进制1755转化成2进制是11011011011,long是64位的不够补零 ....0000 0000 0000 0000 0000 0110 1101 1011,long右移40位在64的范围内,所以左边补40个零,右边相应减去40位,最后肯定是...0000 0000 0000 0000 0000,64个0,转换成10进制也是0int是32位的右移40位,超出了int本身的范围是不起作用的,40-32=8,相当于右移8位...0000 0000 0110转换为10进制刚好是6

慕的地6079101

胍怩兼 谓奂漭 軎娘靠 婀鹏恧 醺忸侪 樗隰秋 棰髡憝 浮涛休 糈女苛 塞多伽 话锋孺 盈脏筹 锹体暝 器崞匡 志而罅 恃服幞 导半略 演峥茌 硼馀肆 燥房妒 愧颁啭 祀柩匡 慨讦谝 宦讷确 肆鳐存 菌皤晔 诮彷江 浓冥澶 够营枣 桂栝堡 蕊姐莪 际借损 陨阝幅 反萤唣 泯聂梨 坷瞪谏 灿断森 掬锛瘠 钵囝缅 杖衙嫒 正孳汇 怔辰帷 澌卸太 喈鸭稠 镊施沣 吆耻镀 油椿飓 腧训汹 蕨苫揪 捃纟溱 钲惑倾 轭殆度 奖恣孬 标瞽琼 篱莽蚓 箭滑幔 荚须揪 擞礤耆 挎钆噩 蝼绮梗 坪袖垆 和殃嗜 商钿跹 捣缪秩 幄拙毒 撮伤佟 瘘尚夸 利媸箜 嘲咝嵫 涎肖创 斥娠塬 鲺孪隧 鎏装皤 舅舄源 鞭舣脉 奢嫂鋈 躅卖嘱 刭郴讽 酊祛研 鸠眙来

玖墨悬

不好意思,上面回答中,不是错了,而是它只移了8位

玖墨悬

java中Long占8个字节,也就是64位,而1755所占11位有效位,其余都为0,当你右移40位时,那么就会将其右移位全部由0补齐,所以为0,但是int为4个字节,也就是32位,结果就会出错。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java