一个简单,但我不理解的问题,高手帮忙!

强制类型转换的结果是怎么样得出来的?,,如下代码

public class ZhuanText4
{
public static void main(String args[])
{
int a=266;
//对a进行强制类型转换
byte b=(byte)a;
System.out.println(a);
System.out.println(b);
}
}

结果是10.

Java书上的解释是:

如果整数变量的取值超过了byte型的取值范围,它的的值将会因为对byte型的值域取模(整数除以byte得到的余数)而减小,这就是10怎么得来的.

那句话什么意思? 书上说的太深刻了,我理解不了,谁能解释下,为什么上面强制类型转换 最后的结果得出来是10,怎么得出来的?

最好能列出个算术例子来,谢谢各位!

无论是什么数据,在计算机中都是以二进制形式表示的,理解到这一点,就不难得出,266的二进制表示是 00000000 00000000 00000001 00001010,int型数据占4个字节,一个字节8位,二进制表示时占32位,byte型数据只占一个字节,8位,int型数据转换成byte时,只会把低8位传给byte,那么byte得到的是00001010,即十进制的10
不知道我是否说明白了
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-05-13
你学过计算机原理就知道这是为什么了

它是截取了int的低8位 一个int是32位的 一个byte是8位的表示-128到127之间
你看二进制的进位是1 2 4 8 16 32 64 128 256
266-256=10
相似回答
大家正在搜