大家还不信了。 某权威网站就是这么描述short是无符号位的。 类型 描述 取值范围 Boolean 布尔型 只有两个值true、false Char 字符型 Byte 8位带符号整数 -128到127之间的任意整数 Short 16位无符号整数 -32768~32767之间的任意整数 Int 32位带符号整数 -231到231-1之间的任意整数 Long 64位带符号整数 -263到263-1之间的任意整数 Float 32位单精度浮点数 根据IEEE754-1985标准 Double 64位双精度浮点数 根据IEEE754-1985标准
唉,lz还是不明白知道整数数的三种基本表示方法吗? signed integer,one's complement和two's complement(抱歉,中文我真的不知道叫什么)。short是16位对吧,如果没有符号位,可以表达得值应该是0-65535,这点你不否认吧。正因为Java用的是two's complement,表达的值才是-32768~32767
short: The short data type is a 16-bit signed two's complement integer. It has a minimum value of -32,768 and a maximum value of 32,767 (inclusive).参见 http://java.sun.com/docs/books/tutorial/java/nutsandbolts/datatypes.html
某权威网站就是这么描述short是无符号位的。
类型 描述 取值范围
Boolean 布尔型 只有两个值true、false
Char 字符型 Byte 8位带符号整数 -128到127之间的任意整数 Short 16位无符号整数 -32768~32767之间的任意整数 Int 32位带符号整数 -231到231-1之间的任意整数 Long 64位带符号整数 -263到263-1之间的任意整数 Float 32位单精度浮点数 根据IEEE754-1985标准 Double 64位双精度浮点数 根据IEEE754-1985标准
那负数如何表示:
two's complement
仅仅是指的是如何计算它的值而已。
two's complement 补码
System.out.println(++b);
one's complement叫反码,我说的那个是补码,参见18楼