计算机如何表⽰⼩数?带例题(定点法、浮点法)
⼩数的表⽰分为「定点法」和「浮点法」
1 定点法,定点数
定点法就是⼩数是预先约定好的
举个例⼦
(1)⼆进制转⼗进制⼆进制 101.011 转化为⼗进制
(2)⼗进制转⼆进制我们要将 10 进制的 5.375 转化为⼆进制
⾸先转化整数部分,很简单,就是 101
然后是⼩数部分,⼩数部分⽤ * 2 计算的⽅法
0.375
0.375 * 2 = 0.75 (此时整数部分为 0 ,记下0)
0.75 * 2 = 1.50 (此时整数部分为1,记下 01,⼩数部。5分还剩下 0.5 我们拿出来继续之前的操作)
0.5 * 2 = 1.0 (此时整数部分为1,记下 011,此时⼩数部分为 0 ,结束)
定点法相对于浮点法⽐较简单,现在计算机的应⽤也⽐较少,我们学过编程语⾔都听说过,浮点数,float,double,没有听说过定点数,定点数现在有 2 中还⽐较常见
1. 整数:定点的⼩数点在最后⼀位
2. 纯浮点数:就是⼩数点在第⼀位,就是只有⼩数没有整数的那种。
2 (重难点)浮点法,浮点数
浮点法 -> 脱发法
我们先来看⼀组数字
0.123,1.23,12.3,123
他们都有⼀个共同的特点,就是可以⽤「科学计数法」  的⽅法来表⽰
浮点法和这个类似,⽤类似「科学计数法」(但是这个⿁东西⽐科学计数法复杂)的⽅法来表⽰的更多⼩数位
2.1 核⼼公式介绍
这个让⼈脱发的公式是:
【浮点数】 = 【符号】*【分数】* 【指数】符号(S):就是类似表⽰正数正负⼀样,很简单
分数(M):理解类似「科学计数法」的基数(类似  的 1.23)
指数(E):理解类似「科学计数法」的指数(类似  的 )
101.011=(1∗2+00∗2+11∗2)+2(0∗2+−11∗2+−21∗23)−=5+0.375=5.375
1.23∗10n V =(−1)∗S M ∗2E
1.23∗10n 1.23∗10n 10n
还有求出 M 和 E 公式(看不懂没关系,理解后⾯的例⼦就⾏了)⼀共就这 3 个重要的公式
2.2 表⽰2种浮点数
表⽰2种浮点数的基本规则是⼀样的
单精度 float 浮点数(4字节 32位)
1  01111100  11100000000000000000000
【1位符号S 】【8位指数 Exponent 】【23位分数 Fraction 】
双精度 double (8字节 64位)
1  01111100000  11100000000000000000000 (00)
【1位符号S 】【8位指数 Exponent 】【23位分数 Fraction 】
具体的算法我们通过例⼦来讲解
2.3 实例 ⼆进制转⼗进制⼩数
将下⾯的⼆进制 32位 浮点数 float 转化为⼗进制
1  01111100  11100000000000000000000
【1位符号S 】【8位指数 Exponent 】【23位分数 Fraction 】
公式:
**(1)S:**⾸位为 1 就是负数,0 就是正数,所以这个值为负数
(2)E:
Exponent 就是指数,就是上⾯中间 8 位指数的位置,这⾥有 8 位 (3)M:
Fraction 就是分数,就是上⾯ 23 位分数的位置
2.4(实例)⼗进制⼩数转⼆进制浮点数
E =Exponent −(2−n −11)
M =1+Fraction
V =(−1)∗S M ∗2E
M =1+Fraction
E =Exponent −(2−n −11)
n =8E =124−(128−1)=−3
M =1+Fraction
Fraction =1∗2+−11∗2+−21∗2=−37/8
M =1+Fraction =1+7/8=15/8
V =(−1)∗S M ∗2=E −1∗15/8∗2=−3−15/64=−0.234275
将 3.125 转化为 32 位⼆进制浮点数 float
float 的组成是
1  01111100  11100000000000000000000
【1位符号S 】【8位指数 Exponent 】【23位分数 Fraction 】 所以我们要求
符号(S)
指数(Exponent)
分数(Fraction)
(1)⾸先将⼩数⽤「定点法」转化为⼆进制
⼗进制:3.125
为⼆进制:11.001
这⾥操作很简单,参考上⾯的定点法
接下来通过公式反向求
(2)求 S 符号
很简单,S = 1
(3)求指数 Exponent
通过我们上⾯可以得出,每⼀个 M 都是 1.xx 的,就是⼀点⼏,所以我们要将
这⾥的 E = 1,$M = 1.1001_{(2)} $
就是类似,超过就左移,⼩于就右移,很简单
公式:
128 转化为⼆进制是 1000 0000(这⾥不考虑符号了)
(4)求分数 Fraction
所以⼀定要求得 M 的值.
上⾯我们求 Exponent 的时候
这⾥的 E = 1,V =(−1)∗S M ∗2E
11.001=1.1001∗21
E =Exponent −(2−n −11)
1=Exponent −(2−8−11)
Exponent =128
M =1+Fraction
11.001=1.1001∗21
M =1.1001(2)
(⼆进制)带⼊公式
Fraction = 1001 0000 0000 0000 0000 000(总和)
0  10000000  1001 0000 0000 0000 0000 000
【1位符号S 】【8位指数 Exponent 】【23位分数 Fraction 】 这个要多练习⼏个例⼦就好了
主要是那 3 个公式M =1.1001(2)M =1+Fraction
浮点数的基数什么意思1.1001=(2)1+Fraction
Fraction =0.1001(2)