A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

byte b = 3;
b=(byte)(b+200);
System.out.println(b);
怎么输出是 -53?   求详细解答~谢谢

6 个回复

正序浏览
zhuhh359627543 发表于 2016-8-19 21:32
怎么就得出负数呢?因为是第一个符号位是1,就立刻知道是负数~逻辑在哪里?还是这个是定理,死记硬背就可以? ...

你要是问为什么符号位是1就是负数,我觉得你应该从头看视频,第二天吧好像,讲的进制。慢慢学,慢慢理解,放弃这题吧先……
回复 使用道具 举报
zhuhh359627543 发表于 2016-8-19 21:32
怎么就得出负数呢?因为是第一个符号位是1,就立刻知道是负数~逻辑在哪里?还是这个是定理,死记硬背就可以? ...

谢谢你,我决定再认真看看视频
回复 使用道具 举报
水月灬清影 发表于 2016-8-19 21:31
我给你算算嗷……
byte是 -128~127 这知道吧。一个字节8位。
b+200=203,越界,截取后八位  二进制表示为 1 ...

好吧,我好好再看看视频吧{:2_43:}
回复 使用道具 举报

怎么就得出负数呢?因为是第一个符号位是1,就立刻知道是负数~逻辑在哪里?还是这个是定理,死记硬背就可以?
回复 使用道具 举报
我给你算算嗷……
byte是 -128~127 这知道吧。一个字节8位。
b+200=203,越界,截取后八位  二进制表示为 11001011,注意!最左边是符号位!而且这个数是补码!代表负数的符号位不变,补码  -1  得到反码,取反,得到原码   10110101    ——>  -53
再看遍视频吧兄弟,我记得视频里有详细讲解的。
回复 使用道具 举报
先看看这个吧

123.jpg (22.06 KB, 下载次数: 4)

过程

过程
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马