Java:int类型和byte类型之间的转换

本文深入探讨了Java中int类型和byte类型之间的转换规则,详细解释了补码存储原理及转换过程,通过具体示例展示了不同数值范围内的转换效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:计算机中数据都是通过补码存储的,对于正数的表示就是二进制原码(因为正数的反码和补码都是原码),对于负数的表示用补码(负数的反码为原码符号位外其他位取反,负数的补码为原码的反码加一)。

大家可以计算下如下代码的输出结果是什么?

/* -128~127范围内的换算*/
byte n1=-128;
System.out.println("-128的int->byte:"+n1);	
byte n2=127;
System.out.println(" 127的int->byte:"+n2);
		
/* 小于-128范围内的换算*/
byte n3=(byte) -129;
System.out.println("-129的int->byte:"+n3);	
byte n4=(byte) -130;
System.out.println("-130的int->byte:"+n4);

/* 大于127范围内的换算*/
byte n5=(byte) 128;
System.out.println(" 128的int->byte:"+n5);
byte n6=(byte) 129;
System.out.println(" 129的int->byte:"+n6);
byte n7=(byte) 130;
System.out.println(" 130的int->byte:"+n7);

实际的输出结果为:

-128int->byte-128
 127int->byte127
 
-129int->byte127
-130int->byte126

 128int->byte-128
 129int->byte-127
 130int->byte-126

int类型的m转换为byte的规则为:对m的补码,截取后8位,并对截取后的二进制数进行求补码操作。

【-128】
原码为:1000 0000 0000 0000 0000 0000 1000 0000
反码为:1111 1111 1111 1111 1111 1111 0111 1111
补码为:1111 1111 1111 1111 1111 1111 1000 0000
截取后8位为:1000 0000,,负数的补码为原码的反码加1
反码为:1111 1111
补码为:1000 0000,即-128
【127】
原码为:0000 0000 0000 0000 0000 0000 0111 1111
截取后8位为:0111 1111
补码为:0111 1111,正数的补码为本身,即127

【-129】
原码为:1000 0000 0000 0000 0000 0000 1000 0001
反码为:1111 1111 1111 1111 1111 1111 0111 1110
补码为:1111 1111 1111 1111 1111 1111 0111 1111
截取后8位为:0111 1111,正数的补码为本身,即127
【-130】
原码为:1000 0000 0000 0000 0000 0000 1000 0010
反码为:1111 1111 1111 1111 1111 1111 0111 1101
补码为:1111 1111 1111 1111 1111 1111 0111 1110
截取后8位为:0111 1110,正数的补码为本身,即126

【128】
原码为:0000 0000 0000 0000 0000 0000 1000 0000
截取后8位为:1000 0000,负数的补码为原码的反码加1
反码为:1111 1111
补码为:1000 0000,即-128
【129】
原码为:0000 0000 0000 0000 0000 0000 1000 0001
截取后8位为:1000 0001,负数的补码为原码的反码加1
反码为:1111 1110
补码为:1111 1111,即-127
【130】
原码为:0000 0000 0000 0000 0000 0000 1000 0010
截取后8位为:1000 0010,负数的补码为原码的反码加1
反码为:1111 1101
补码为:1111 1110,即-126
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王小二(海阔天空)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值