JAVA中int强制转换byte
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中int强制转换byte相关的知识,希望对你有一定的参考价值。
因为在java中,int类型的占4个字节,而byte占1个字节,所以int类型转化为byte类型时会出现位丢失情况,即将int的低8位作为byte类型的值。int型变量的值为257,对应的二进制是100000001,后8位是00000001,第一个0表示符号位,表示正数,所以变量x的值为1。 参考技术A int是32位
4个字节
8位1字节
int转换成byte
前面的3个字节
即24位
直接砍掉
就剩最后一位
所以
266
——(00000000)(00000000)(00000001)(00001010)
==
0001010
=
1*
2
+
1
*2*2*2
=
10
最开始的0
表示是正数
如果是1表示负数
还要先按位取反再加1
然后才能算出来表示的数值
java数据类型转换之int,byte
直接看以下的运算:
public class TestConvert{ public static void main(String []args){ byte b1=67; byte b2=89; byte b=(byte)(b1+b2);//系统强制转换成int型运算。须要强制转换符 System.out.println(b); } }分析:byte类型的存储空间为1字节,范围为-128~127;int类型的存储空间为4字节;
byte b1= 67=01000011;//符号位为正
byte b2= 89=01011001;//符号位为正
01000011
+ 01011001
----------------------------------
10011100(超出表示范围上限。符号位为1,表示负数)
对10011100取反01100011并加1->01100100
即-(64+32+4)=-100
这里主要涉及到十进制到二进制的转换,补码,反码!
这是个人的思路,假设有错误的地方还请雅正!
以上是关于JAVA中int强制转换byte的主要内容,如果未能解决你的问题,请参考以下文章