发布网友 发布时间:2022-04-21 14:28
共5个回答
热心网友 时间:2023-11-12 04:52
byte类型的范围是-128至127,所以这样的转换肯定是有问题的。不知道你为什么要进行这样的转换。
高级数据类型int向低级数据类型byte的强制转换会导致数据丢失,所以出现-24和+24很正常。
int 32位
byte 8位
所以由int转向byte ,高位被截掉了24位。
int=21;在计算机中表示为00000000,00000000,00000000,00010101
byte=21;就是00010101
byte转换int直接赋值,int转byte强制类型转换,因为涉及精度。
热心网友 时间:2023-11-12 04:52
byte的大小为2^8=256
范围是-128至127 只能表示256个数
128时溢出为-128
然后逐渐增大
129时为-127
256时为零
383时为127最大
384时又溢出为-128
如此以256为循环
当256*4=1024时为零
1000=1024-24=0-24=-24
当256*-4=1-024时为零
-1000=-1024+24=0+24=24
热心网友 时间:2023-11-12 04:53
当超出byte范围时,计算机则采用补码方式读取数据,如1000,二进制为1111101000,用补码方式读取即1000011000,即-24,而-1000,则为0000011000,则为24,10分就能买这么多东西了,20分先给我就给你详细分析补码方式,OK,就这样了
热心网友 时间:2023-11-12 04:53
int 32位
byte 8位
转换后就会溢出。
所以由int转向byte ,多出来的位就会被截掉的。
热心网友 时间:2023-11-12 04:54
byte:一个字节(8位)
参考资料:http://zhidao.baidu.com/question/65177581.html?si=3