int类型强制转换为 byte类型


标签:
强制类型转换 |
分类: java |
Java代码 http://momoxiaoxiong.iteye.com/images/icon_star.pngbyte类型" />
-
public
class Test { -
public static void main(String[] args) { -
int start = -131; -
int end = 131; -
-
for (int i = start; i < end; i++) -
if ((byte) i != i) -
System.out.println("原数:" + i + "\t转化后:" + (byte) i); -
} -
-
}
Java代码 http://momoxiaoxiong.iteye.com/images/icon_star.pngbyte类型" />
-
原数:-131
转化后:125 -
原数:-130
转化后:126 -
原数:-129
转化后:127 -
原数:128
转化后:-128 -
原数:129
转化后:-127 -
原数:130
转化后:-126
Java代码 http://momoxiaoxiong.iteye.com/images/icon_star.pngbyte类型" />
-
//java采用补码存储整数,int型为32位,byte为8位
-
//那么130在内存中的表示形式:00000000
00000000 00000000 10000010 -
//这样截取后8位就变成10000010,补码表示的时候第一位是符号位,0正1负,
-
//所以可以知道10000010肯定是一个负数了,再来看它的数值部分,
-
//补码由正数变负数,还是正数变负,方法:“按位取反,再加1”,
-
//所以0000010应该变为1111101
+ 1 = 1111110(即126) -
//又因为是负数,所以就截取变成-126了
-
-
//我们再来看下-130的例子(符号位是1,其余按位取反+1)
-
//-130在内存中的表示形式:11111111
11111111 11111111 01111110 -
//这样截取后8位就变成01111110
-
//显然这是整数啊,然后数值部分是126
-
//64+32+16+8+4+2=126
前一篇:静态内部类
后一篇:java表达式中类型的自动提升