1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Java:简述Java中int和byte类型类型之间的转换

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

时间:2021-02-23 15:45:20

相关推荐

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

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

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

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

/* -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);

实际的输出结果为:

-128的int->byte:-128127的int->byte:127-129的int->byte:127-130的int->byte:126128的int->byte:-128129的int->byte:-127130的int->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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。