2.1
都是整型,但是存储空间不一样。在32位机器上short有2个字节,int有2个字节,而long需要4个字节。由于存储空间不同,表示的范围也不同。这里short和int的表示范围从-32768到32767,long的表示范围从-2147483648到2147483647
2.2
有符号数的最高位,用1表示负数,0表示正数,无符号数没有此规则。
2.3
32767,这是有符号的short。无符号的short的最大值是65535。
2.4
unsigned short表示0~65535,总共65536个整数,用100000来赋值,溢出,则实际的值是100000%65536=34464。
2.5
float和double都是表示浮点数,但是可以表示的有效数字不同,float的只有6位,而double的有10位。float一般32位,4个字节,double一般64位,8个字节。
float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:
- float:1bit(符号位)+8bits(指数位+23bits(尾数位)
- double:1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位)
float的指数范围为-127~128,而double的指数范围为-1023~1024,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对值最小的数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的