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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于XINCHENG 中级黑马   /  2013-8-9 16:50  /  1319 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请教大家一个关于强制转换的问题,如下图所示:

强制转换的问题.png (27.16 KB, 下载次数: 26)

为什么强制转换后输出的是-128?

为什么强制转换后输出的是-128?

4 个回复

倒序浏览
这是很基础的问题,建议你多看API或者资料.自己动手丰衣食足,
回复 使用道具 举报
byt02的计算方法如下:b的值转换为二进制是10000000,取该数字低8位的值作为byt02的值,则byt02的二进制值是10000000,按照机器数的规定,最高位是符号位,1代表负数,在计算机中负数存储的是补码,则该负数的原码是10000000,该值就是十进制的-128。
回复 使用道具 举报
byte类型的范围是 -127~128 然而超出了这个范围就不是原来的范围的数据 了。
回复 使用道具 举报
首先byte的范围是:-128——127,
再看你的代码:
        int b=128;
        byte byt02=(byte)b;
b由int型向byte型转换,发生越界溢出,byte最大值(127)加1,会变成最小值-128,最小值(-128)减1,就会变成最大值;
(希望对你有帮助!)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马