java题目:定义byte类型的a=89和byte类型的b=67,然后把a和b的值进行相加,并输值给类型为byte的c。 10

在线等... 在线等 展开
 我来答
扰龙家076
2013-03-20
知道答主
回答量:48
采纳率:0%
帮助的人:21.4万
展开全部
byte a=89
byte b=67
byte c=(byte)(a+b)
byte型最大为127,所以byte c肯定放不下,要加强制转换,不过c的值是-100,因为溢出,可以调用计算器看看。byte为一个字节,八位,最大表示二的七次方减一也就是127;89+67为156,byte放不下,a+b先按int计算,int是32位,四个字节,然后强转为byte,截掉前面24位,就为10011100
首位为一,是负数,即计算机里补码是10011100,补码减一为反码10011011,除去第一位按位取反,为11100100,即-100。

我回答最详细了,还有什么要问的??
更多追问追答
追问
能写出具体的步骤和源代码吗
追答
public static void main(String[] args) {
// TODO Auto-generated method stub
byte a=89;
byte b=67;
byte c=(byte)(a+b);
System.out.println(c);
}
主函数,结果显示是-100,然后呢,一步一步解释吧。
茶语轻歌
2013-03-20 · TA获得超过206个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:131万
展开全部
你为什么要这样干呢?byte的范围是-128到127,你的a+b超出了byte的范围,如果一定要赋值给byte类型,会精度丢失的。
追问
要求输出c的值,并分析说明c值结果出现的原因
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
IT届Kakit
2013-03-20 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:371
采纳率:0%
帮助的人:127万
展开全部
你到底要干嘛?不是就是个加法吗?
更多追问追答
追问
要求输出c的值,并分析说明c值结果出现的原因
追答
你定义的时候就会分配内存存入你要存入的数据,你定义了a,b,c3个内存块,c的内存值则是a+b,一般我们直接就是把他们相加,像String一样把指针指向a的内存值和b的内存值然后相加放入缓存中去,但是byte的取值范围超出了,我们用111110表示127,超过数值我们直接在这个基础上加,跳回-128,-127……
这个是我的个人理解,不知道对不,望大神赐教!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式