Java 添加short和int值,并将其存储在short变量中
当我执行下面的代码时,我得到了-7615。 谁能告诉我怎么做Java 添加short和int值,并将其存储在short变量中,java,Java,当我执行下面的代码时,我得到了-7615。 谁能告诉我怎么做 public static void main(String[] args) { short s = 1; int z=123456; s+=z; System.out.println(s); } short不能表示值123457,因此您将得到溢出 二进制123457将为11110001001000001,即17位,由于short只能存储16位,因此该值将被截断为1110001001000001。第一
public static void main(String[] args)
{
short s = 1;
int z=123456;
s+=z;
System.out.println(s);
}
short不能表示值123457,因此您将得到溢出
二进制123457将为11110001001000001,即17位,由于short只能存储16位,因此该值将被截断为1110001001000001。第一位表示符号,即,因为它是1,所以有一个负数,因为负数存储在2的补码1110001001000001中,所以表示-7615的值。正7615将是二进制001110111111,对于负7615,它是110001001000001的两个补码。From and
short:short数据类型是一个16位有符号2的补码整数。它的最小值为-32768,最大值为32767(含)。与byte一样,同样的准则也适用:在内存节省非常重要的情况下,可以使用short来在大型阵列中节省内存
和
s = (short)(123456 + 1) ;
有符号整数到整数类型T的缩小转换只会丢弃n个最低阶位以外的所有位,其中n是用于表示类型T的位数。除了可能丢失有关数值大小的信息外,这可能导致结果值的符号与输入值的符号不同
所以123457=11110001001000001
Short可以表示为16位=1110001001000001,这是负值,因为它以1开头
所以要存储-ve数字,请将其转换为两个补码
1110001001000001=2的补码-7615。短时间内可以存储的值的范围是什么?如果不是-7615,您期望值是多少?
s = (short)(123456 + 1) ;