如果突然问这个问题,不知道是不是每个人都能思路清晰的应答。下面简单的说一说这个区别
32位的整数,最大值是21亿左右,占用4个字节的浮点数,最大值大约是3.4×10^38.
虽然两者占用的空间一致,但是其组织数据的方式是完全不同的。
先说说比较属性的整形吧,为了简单,只说正数,符号位1位,值为0,后面的全部是111, 0111 1111 1111 1111 1111 1111,16进制的表示为 7F FF FF FF.
浮点数的表示方法为: 符号位 + 阶码 + 尾数,为了简化,这里也只是考虑正数。4字节的浮点数,符号位1,解码有8位,而尾数就有23位。 其中阶码在实际中用移码表示,尾数就是浮点数内部可以存储表达的真实数据部分。
先看一个简单的例子。
30.5如何表示:
正数:符号位为0
30用二进制表示就是 11110
0.5用二进制表示是: 0.1
小数转换为二进制,就是用二成 5 × 2 = 10,那么这里就是0.1了
那么综合起来就是 11110.1,那么这样看起来,该数亦可以向左移动4次(阶码),即 真实的尾数就是1.11101,众所周知,二进制就0,和1,而从尾数的特点可以看出,最原始的尾数一定是 1.xxxx,即第一位恒为1,这样,这个1就可以省略,