Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 添加short和int值,并将其存储在short变量中_Java - Fatal编程技术网

Java 添加short和int值,并将其存储在short变量中

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。第一

当我执行下面的代码时,我得到了-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。第一位表示符号,即,因为它是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) ;