C \ C++中整型数据都是有数据范围的,对溢出的数据处理机制一般是数据值和数据范围值进行求模处理,求模可以这么理解,数据描述是一个数据描述范围最小值到最大值的一个闭环循环,求模后的值会仍在这个闭环范围内,例如钟表,可用1~12来一个闭环来描述,13则就是从新回到1(13 % 12)。
在C\C++中,一个整型数据val,其当前类型下的描述值可用如下公式计算:
描述值 = (val - 当前类型最小值) % 数据范围 + (当前类型最小值)
这个计算对于数据溢出和不溢出都是适用的。
(1)short int数据类型
short数据占用2个字节,则数据范围为-32768~32767,共计65536个数,则一个short val,其实际描述值realVal为
realVal = (val - (-32768)) % 65536 + (-32768)
一、基本数据类型的特点,位数,最大值和最小值。
1、
基本类型:short 二进制位数:16 (2字节)
最小值:Short.MIN_VALUE=-32768 (-2的15此方)
最大值:Short.MAX_VALUE=32767 (2的15次方-1)
2、
基本类型:int 二进制位数:32(4字节)
最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方)
最大值:Integer.MAX_VALUE= 2147483647 (2的31次方-1)
3、
基本类型:long 二进制位数:64(8字节)
最小值:Long.MIN_VALUE=-9223372036854775808 (-2的63次方)
最大值:Long.MAX_VALUE=9223372036854775807 (2的63次方-1)
4、
基本类型:float 二进制位数:32(4字节)
最小值:Float.MIN_VALUE=1.4E-45 (2的-149次方)
最大值:Float.MAX_VALUE=3.4028235E38 (2的128次方-1)
5、
基本类型:double 二进制位数:64(8字节)
最小值:Double.MIN_VALUE=4.9E-324 (2的-1074次方)
最大值:Double.MAX_VALUE=1.7976931348623157E308 (2的1024次方-1)
基本类型 | 字节数 | 位数 | 最大值 | 最小值 |
byte | 1byte | 8bit | 2^7 - 1 | -2^7 |
short | 2byte | 16bit | 2^15 - 1 | -2^15 |
int | 4byte | 32bit | 2^31 - 1 | -2^31 |
long | 8byte | 64bit | 2^63 - 1 | -2^63 |
float | 4byte | 32bit | 3.4028235E38 | 1.4E - 45 |
double | 8byte | 64bit | 1.7976931348623157E308 | 4.9E - 324 |
char | 2byte | 16bit | 2^16 - 1 | 0 |