黑马程序员技术交流社区

标题: 强制转换的问题 [打印本页]

作者: 于XINCHENG    时间: 2013-8-9 16:50
标题: 强制转换的问题
请教大家一个关于强制转换的问题,如下图所示:

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

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

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

作者: What/    时间: 2013-8-9 17:15
这是很基础的问题,建议你多看API或者资料.自己动手丰衣食足,
作者: 崔一恒    时间: 2013-8-9 17:17
byt02的计算方法如下:b的值转换为二进制是10000000,取该数字低8位的值作为byt02的值,则byt02的二进制值是10000000,按照机器数的规定,最高位是符号位,1代表负数,在计算机中负数存储的是补码,则该负数的原码是10000000,该值就是十进制的-128。
作者: 杨增坤    时间: 2013-8-9 18:01
byte类型的范围是 -127~128 然而超出了这个范围就不是原来的范围的数据 了。
作者: jagon    时间: 2014-3-12 10:36
首先byte的范围是:-128——127,
再看你的代码:
        int b=128;
        byte byt02=(byte)b;
b由int型向byte型转换,发生越界溢出,byte最大值(127)加1,会变成最小值-128,最小值(-128)减1,就会变成最大值;
(希望对你有帮助!)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2