黑马程序员技术交流社区
标题:
byte的问题
[打印本页]
作者:
王骥
时间:
2015-6-18 22:54
标题:
byte的问题
byte a =(byte)130为什么会是负的啊
作者:
hufu4635
时间:
2015-6-18 23:12
130不属于byte范围内,强转成byte就容易丢失精度,出现负数的情况
作者:
林RM
时间:
2015-6-18 23:47
byte的范围是-128-127
作者:
金亮0602
时间:
2015-6-19 00:20
超出byte范围的直接被删掉了
作者:
迷路的小孩儿
时间:
2015-6-19 09:09
学习了
作者:
GiveUp
时间:
2015-6-19 15:40
先将130化成二进制的形式,然后截取属于byte能够容纳的部分,注意,这时候取得的应该是补码,将其换算成源码,然后再化成十进制,就是得到的结果了。
作者:
为了理想而奋斗
时间:
2015-6-19 17:52
不在范围内,丢失精度。强制转换可以用等等
作者:
qian0217wei
时间:
2015-6-19 18:31
王冀你又水了!
作者:
msxhm
时间:
2015-6-19 18:53
强制转换被丢失了精度呗~
作者:
半山岩
时间:
2015-6-19 21:17
旁观也受益匪浅了
作者:
走在路上
时间:
2015-6-19 22:04
本帖最后由 走在路上 于 2015-6-19 22:10 编辑
130是int类型的数,将int类型强转成byte类型,容易丢失精度.byte的取值范围是-128——127,所以强转就出现了负数
作者:
cyd1058
时间:
2015-6-19 22:28
超出了byte的范围
作者:
mls123456
时间:
2015-7-5 00:56
因为byte 的范围是-128~127,超过就是负数了
作者:
home7192
时间:
2015-7-5 01:16
学习了,说的很全面!
作者:
为明天而奋斗
时间:
2015-7-5 01:51
130的2进制表现形式是0000 0000 0000 0000 0000 0000 1000 0010 转为byte的话虽然还是1000 0010
作者:
为明天而奋斗
时间:
2015-7-5 01:55
int型130的2进制表现形式是0000 0000 0000 0000 0000 0000 1000 0010 转为byte后2进制就是1000 0010最高位是1了,而负数的最高位是1,所以这个数就是负数啦
作者:
乔栋
时间:
2015-7-5 07:32
byte 范围-128----127
作者:
nanfp
时间:
2015-7-5 08:10
说的好。。
作者:
吃荷包蛋
时间:
2015-7-5 11:56
因为130超出了范围
作者:
zhjunwenyy
时间:
2015-7-5 14:50
int是4个字节32位,byte是1个字节8位, 强转时直接获取int的后八位, 失去精度了
作者:
icichacici
时间:
2015-7-5 15:42
因为byte类型范围是-128~127,强转成byte就丢失精度。
作者:
牵着蜗牛去逛街
时间:
2015-7-5 16:24
yte a =(byte)130这样写本省就有问题byte只占一个字节它的范围是-128~127 强制转换会丢失精度
作者:
samove
时间:
2015-7-5 20:20
楼上各位大神已经解释的很清楚了,我也来学习学习
作者:
白面馅包子
时间:
2015-7-5 20:42
byte 范围 -2的7次幂 到 2的7次幂-1
作者:
形而上孤独
时间:
2015-7-5 21:55
学习了!
作者:
鹰隼展翼
时间:
2015-7-5 22:18
130超出byte范围了将130转换成130的补码
计算过程补码10000010
作者:
鹰隼展翼
时间:
2015-7-5 22:19
鹰隼展翼 发表于 2015-7-5 22:18
130超出byte范围了将130转换成130的补码
计算过程补码10000010
转换成反码10000001
转换成原码11111110 =-126
作者:
张业涛
时间:
2015-7-5 22:20
byte的范围是-128到127
作者:
xuhao3622603
时间:
2015-7-5 22:23
损失精度
作者:
tinibuzhi
时间:
2015-7-5 22:39
学习了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2