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

© 王骥 中级黑马   /  2015-6-18 22:54  /  3210 人查看  /  29 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

byte a =(byte)130为什么会是负的啊

29 个回复

正序浏览
学习了      
回复 使用道具 举报
损失精度
回复 使用道具 举报
byte的范围是-128到127
回复 使用道具 举报
鹰隼展翼 发表于 2015-7-5 22:18
130超出byte范围了将130转换成130的补码
计算过程补码10000010

转换成反码10000001
转换成原码11111110 =-126
回复 使用道具 举报
130超出byte范围了将130转换成130的补码
计算过程补码10000010
回复 使用道具 举报
形而上孤独 来自手机 中级黑马 2015-7-5 21:55:14
24#
学习了!
回复 使用道具 举报
byte 范围   -2的7次幂   到  2的7次幂-1
回复 使用道具 举报
楼上各位大神已经解释的很清楚了,我也来学习学习
回复 使用道具 举报
yte a =(byte)130这样写本省就有问题byte只占一个字节它的范围是-128~127 强制转换会丢失精度
回复 使用道具 举报
因为byte类型范围是-128~127,强转成byte就丢失精度。
回复 使用道具 举报
int是4个字节32位,byte是1个字节8位, 强转时直接获取int的后八位, 失去精度了
回复 使用道具 举报
因为130超出了范围
回复 使用道具 举报
说的好。。
回复 使用道具 举报
byte 范围-128----127
回复 使用道具 举报
int型130的2进制表现形式是0000 0000 0000 0000 0000 0000 1000 0010 转为byte后2进制就是1000 0010最高位是1了,而负数的最高位是1,所以这个数就是负数啦
回复 使用道具 举报
130的2进制表现形式是0000 0000 0000 0000 0000 0000 1000 0010 转为byte的话虽然还是1000 0010
回复 使用道具 举报
学习了,说的很全面!
回复 使用道具 举报
因为byte 的范围是-128~127,超过就是负数了
回复 使用道具 举报
超出了byte的范围
回复 使用道具 举报
本帖最后由 走在路上 于 2015-6-19 22:10 编辑

130是int类型的数,将int类型强转成byte类型,容易丢失精度.byte的取值范围是-128——127,所以强转就出现了负数
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马