byte i = 127; i += 1;

大涵涵 2017-07-28 09:00:57
执行下列语句后,变量i的值是:
byte i = 127;
i += 1;

A. 128
B. 0
C. 1
D. -128


答案是什么,能给讲解一下吗?
...全文
747 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
JOKER叔叔 2017-07-28
  • 打赏
  • 举报
回复
低八位,一半正一半负,0000 0000>0111 1111是0>127,+1超出正数范围1000 0000 >1111 1111是-128>-1,-1+1超出低八位,进位变成0000 0000
千杯不醉476 2017-07-28
  • 打赏
  • 举报
回复
-128



转自:
http://bbs.csdn.net/topics/390389645

java中byte类型作计算,都会先转换成int类型再计算。
比如
byte b = 127 + 1;//这样写报错:Type mismatch: cannot convert from int to byte
所以必须强制类型转换:
byte b = (byte) (127 + 1);

因此就能理解为什么是-128了:
int型的127在计算机内的二进制是:
0000 0000 0000 0000 0000 0000 0111 1111
加1后变成:
0000 0000 0000 0000 0000 0000 1000 0000
即128
强制转换后截取低8位变成
1000 0000
这是byte类型-128的补码。

50,523

社区成员

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

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