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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

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

29 个回复

倒序浏览
130不属于byte范围内,强转成byte就容易丢失精度,出现负数的情况
回复 使用道具 举报
byte的范围是-128-127
回复 使用道具 举报
超出byte范围的直接被删掉了
回复 使用道具 举报
学习了     
回复 使用道具 举报
先将130化成二进制的形式,然后截取属于byte能够容纳的部分,注意,这时候取得的应该是补码,将其换算成源码,然后再化成十进制,就是得到的结果了。
回复 使用道具 举报
为了理想而奋斗 来自手机 中级黑马 2015-6-19 17:52:32
7#
不在范围内,丢失精度。强制转换可以用等等
回复 使用道具 举报
王冀你又水了!
回复 使用道具 举报
msxhm 中级黑马 2015-6-19 18:53:17
9#
强制转换被丢失了精度呗~
回复 使用道具 举报
旁观也受益匪浅了
回复 使用道具 举报
本帖最后由 走在路上 于 2015-6-19 22:10 编辑

130是int类型的数,将int类型强转成byte类型,容易丢失精度.byte的取值范围是-128——127,所以强转就出现了负数
回复 使用道具 举报
超出了byte的范围
回复 使用道具 举报
因为byte 的范围是-128~127,超过就是负数了
回复 使用道具 举报
学习了,说的很全面!
回复 使用道具 举报
130的2进制表现形式是0000 0000 0000 0000 0000 0000 1000 0010 转为byte的话虽然还是1000 0010
回复 使用道具 举报
int型130的2进制表现形式是0000 0000 0000 0000 0000 0000 1000 0010 转为byte后2进制就是1000 0010最高位是1了,而负数的最高位是1,所以这个数就是负数啦
回复 使用道具 举报
byte 范围-128----127
回复 使用道具 举报
说的好。。
回复 使用道具 举报
因为130超出了范围
回复 使用道具 举报
int是4个字节32位,byte是1个字节8位, 强转时直接获取int的后八位, 失去精度了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马