page contents

(byte)300==(byte)100+(short)200?

轩辕小不懂 发布于 2021-08-04 15:00
阅读 656
收藏 0
分类:Java开发
1578
Nen
Nen
- 程序员

false。

java中byte的取值范围是-128~127,发生上溢下溢时要模256;130>127上溢,故模256得130,仍溢出,再减256得-126,所以s=-126。300>127上溢,故模256得44,44在byte取值范围内,故s=44.

300 的 二进制是:100101100;byte强制转换后从右往左取8位为:00101100;因为第八位为0所以为正数,又知道正数的原反补码都相同;所以00101100转换为十进制是:44(32+8+4)

(byte)100+(short)200,byte和short的结果会自动转为short不会溢出。所以(byte)100+(short)200=(short)300,而(byte)300的结果是44.即两者不相等。

请先 登录 后评论