问一个java基本数据类型的问题

[复制链接]
查看11 | 回复4 | 2013-4-16 15:30:29 | 显示全部楼层 |阅读模式
以下是我的理解: byte b=0x80 会报错因为超了范围byte b=(byte)0x80;不报错运行结果是-128,这个的原因就是在强制类型转换的时候去掉了超出的部分,然而byte的范围就是在-128~+127之间,而你这个事负数,所以去掉多余的部分就成了-128,强制类型转换会损失数据的,所以在做金融财务的时候都不会这样处理! 希望可以帮助到你,望采纳……...
回复

使用道具 举报

千问 | 2013-4-16 15:30:29 | 显示全部楼层
byte b=0x80报错是因为这样等同于byte b= (int)0x80即byte b= 128,这样就超出了byte的取值范围,所以会报错byte b=(byte)0x80;不报错运行结果是-128 的原因是因为这样写相当于byte b= 二进制的10000000,左边第一个1,表示负号位,因为计算机中负数是补码表示,真实的值是将补码除了符号位...
回复

使用道具 举报

千问 | 2013-4-16 15:30:29 | 显示全部楼层
没有强转之前取值范围是-128~127;(128〉127所以报越界);强转之后会自动屏蔽掉越界的位置;只保留8位;0X80不就是十进制128么,第八位是1其余都是零,又因为机器存的是补码,1000 0000不就是-128么。...
回复

使用道具 举报

千问 | 2013-4-16 15:30:29 | 显示全部楼层
强制转换。。。。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行