数值范围:一种数据类型所能表示的最大值和最小值。
数据精度:实数所能表示的有效数字位数。
数值范围和数据精度均与使用多少位二进制位数以及编码方式有关。
计算机用数字表示正负,隐含规定小数点。采用“定点”、“浮点”两种表示形式。
整数数据类型
1个字节=8bit,也就是8位
一个字节,8位,其中最大为127(2^7-1)(从0到127)
转化为二进制为0111 1111
最小为-128(从-1到-128)(-2^7)
转化为二进制为1111 1111
其中的第一位为符号位,
第一位是0,代表是正数
第一位是1,代表是负数
其中的正数和负数的个数是相同的。
当数据类型的字节为2时同理
最小为1111 1111 1111 1111(-2^15)
最大为0111 1111 1111 1111(2^15-1)由此可以得出下表:
整型数据类型的取值范围
数据类型 | 字节 | 范围 |
byte | 1 | -128~127(-2^7~2^7-1) |
short | 2 | -32768~32767(-2^15~2^15-1) |
int | 4 | -2^31~2^31-1 |
long | 8 | -2^63~2^63-1 |
定点整数——小数点位置固定在数的最低位之后
若采用原码,则范围为: -(2n-1) ~ 2n -1
其中n表示数值位的位数。
浮点型数据类型
浮点数的一般格式
浮点数的表示范围
一旦浮点数的位数确定以后,合理分配阶码和尾数的位数,直接影响浮点数的表示范围和精度。
阶码越长,表示范围越大;
尾数越长,表示精度越高。
所以说阶码影响浮点数的范围。
对于浮点数有专门的标准规格:IEEE754,
它提供了两种浮点数格式:32位单精度格式和64位双精度格式。
符号位S | 阶码 | 尾数 | 总位数 | |
短实数/单精度 | 1 | 8 | 23 | 32 |
长实数/双精度 | 1 | 11 | 52 | 64 |
临时实数/扩展精度 | 1 | 15 | 64 | 80 |
以单精度浮点数为例,(共32位)其中符号位1位,阶码8位,尾数23位。阶码取值范围:
正数最大值为0111 1111为127
正数最小值为为1000000为128
从阶码的角度去计算最大为2^127
最小为2^-128
定点小数——小数点位置固定在数的符号位之后、数值最高位之前。
若采用原码,则范围为:-(1-2-n) ~ 1-2-n
八字节long范围-2^63~2^63-1
四个字节的float大概为2^-128~2^127
显然float更大