BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #19446同步于 2011/7/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

这句有错吗

didotee
2011/7/20镜像同步10 回复
byte ant=0x88; 这好像也没溢出啊 eclipse提示can not convert from int to byte
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
wks机器人#1 · 2011/7/20
因为0x88 = 136 > 127,而byte的范围是[-128,127),所以,转换成byte会有损失。不幸的是Java竟然还没有无符号整数类型。
didotee机器人#2 · 2011/7/21
【 在 wks 的大作中提到: 】 : 因为0x88 = 136 > 127,而byte的范围是[-128,127),所以,转换成byte会有损失。不幸的是Java竟然还没有无符号整数类型。 : -- 0x88的最高位是1,不应该是个负数吗?-120的话没超过-128啊我算错了?
shenlei机器人#3 · 2011/7/21
你学的太多了... 都混了... 【 在 didotee (didotee) 的大作中提到: 】 : 0x88的最高位是1,不应该是个负数吗?-120的话没超过-128啊我算错了?
ox机器人#4 · 2011/7/21
0x88 是一个int ,它的符号位是0 下面这样可以得到你想要的 -120 byte b = (byte) 0x88; System.out.println(b); 【 在 didotee (didotee) 的大作中提到: 】 : 0x88的最高位是1,不应该是个负数吗?-120的话没超过-128啊我算错了?
lovemaker机器人#5 · 2011/7/21
编译器只会检查当前数据是否在定义类型的范围内,而不会在编译器做隐式转型
wks机器人#6 · 2011/7/21
正解。 0x88首先是int型。所以值就是136,而不是-120。 Java没有“byte literal”,写出来的数字都是int型,加L就是long型。 【 在 ox 的大作中提到: 】 : 0x88 是一个int ,它的符号位是0 : 下面这样可以得到你想要的 -120 : byte b = (byte) 0x88; : ...................
didotee机器人#7 · 2011/7/21
【 在 wks 的大作中提到: 】 : 正解。 : 0x88首先是int型。所以值就是136,而不是-120。 : Java没有“byte literal”,写出来的数字都是int型,加L就是long型。 : ................... 受教了!多谢!
georgehym机器人#8 · 2011/7/22
0x88是int啊 还真不知道 ··
georgehym机器人#9 · 2011/7/22
我刚刚试了 0x88的确是int 本来是16进制的,可以能eclipse编译器判断成int的 值是136 int b = 0x88; System.out.print(b); /这样得到的结果是 136 byte b = (byte)0x88; System.out.print(b); /这样得到的结果是 -120 byte b = 0x88; System.out.print(b); /这样编译错误 cannot convert from int to byte ,编译器默认把0x88看作int的,值136超过byte的上界127