请解释从 int 到 short 的转换
Please explain conversion from int to short
谁能给我解释一下:
short s = 0;
int x = 07;
int y = 06;
int z = 123456;
s= (short) z;
System.out.println(""+s);
System.out.println(" "+x+y+s);
输出为
-7616
76-7616
请说明。
123456
十六进制为 1E240
.
由于 short 只能容纳两个字节,因此您丢失了第一个十六进制数字并以 E240
结尾。
E240
在二进制中是 1110001001000000
,因此它是一个二进制补码负数。要找到它所代表的负数的(绝对)值,您需要反转数字并加 1。
0001110110111111
是 7615
,加上 1
得到 7616
.
这就是您看到 -7616
的原因。
更多关于二进制补码的信息:http://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html
谁能给我解释一下:
short s = 0;
int x = 07;
int y = 06;
int z = 123456;
s= (short) z;
System.out.println(""+s);
System.out.println(" "+x+y+s);
输出为
-7616
76-7616
请说明。
123456
十六进制为 1E240
.
由于 short 只能容纳两个字节,因此您丢失了第一个十六进制数字并以 E240
结尾。
E240
在二进制中是 1110001001000000
,因此它是一个二进制补码负数。要找到它所代表的负数的(绝对)值,您需要反转数字并加 1。
0001110110111111
是 7615
,加上 1
得到 7616
.
这就是您看到 -7616
的原因。
更多关于二进制补码的信息:http://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html