大二上,计组原理笔记(2)2.2 机器数的定浮点表示

前言: 我的个人听课记录,毕竟是初学,错误在所难免,我知道了错误会改正更新,欢迎指导也欢迎一起讨论学习。

2.2 机器数的定浮点表示

引言

上次课解决了如何表示带符号数的符号在计算机的表示方法——设置首位为符号位,这次课解决计算机中小数点的表示方法——不表示。
小数点在计算机中不表示,只是和计算机约定好了小数点存在的位置。

计算机可以分成整数机和小数机。(都是定点机)
小数机只处理小数,即送到小数机的数必须是小数且必须是纯小数,约定小数点在符号位后边。
整数机只处理整数,即送到整数机的数必须是整数,约定小数点在数的末尾。

在这里插入图片描述
基本原理都是将小数点固定在双方约定的位置,因此不需要表示在数字中。

2.1定点机

定点小数

小数机约定:小数点在符号位后边。

定点整数

整数机约定:小数点在数据末尾。

例题

例1:X=1001的十进制数
小数机:1.001=-0.125D?错,原码or补码?
原码:-2-3=-0.125
补码:1.110+1=1.111,
即 -(2-1+2-2+2-3)= -0.875
整数机:
原码:1001即-1
补码:1110+1=1111,即-7
例2:X=1000
原码:
整数:1000即-0
小数:1.000即-0
补码:
整数:1111+1=0000,即+0, 阿哦,错了。
它不眼熟吗?补码1000是-8呀!!(整数的负的最大)
小数:-1 (1.000小数的负的最大为-1)

2.2.2浮点机

核心:科学计数法表示。
+32.75,用科学计数法表示为:+0.3275 × \times × 102
即存储: 0.3275 和 2
例:11.011 即+ 0.11011 × \times × 2+10
(其中都是二进制,10是2)
在计算机中应存储:
011011 和010,
且定义011011为尾数,定义010为阶码。
于是浮点机规格可以用(m,n)表示,其中m表示阶码有m位,n代表尾数有n位。
在这里插入图片描述

定浮点数的表示举例:-6.5:

 定点小数:(-6.5)D=-110.1)B
       原码:11101
       原码:10010+1=10011
定点正数:
      原码:11101
      补码:10011
浮点机:-6.5=-110.1=-0.1101* 2^11113)
    原码:11101 011
    补码:10011 011
    尾数的原码转补码即10010+1=10011 阶码011的补码即011(正数)。     
PS:
定点正数和定点小数的原补码虽然长得一样,但具体不一样。
定点小数的原补码隐含小数点在符号位后边,
而定点小数的原补码隐含小数点在末尾。

可以看到定点整数和定点小数用5位就可以表示,而浮点机的话需要用8位才能表示。于是引出精度和范围比较:

2.2.3精度和范围比较

精度:一种编码方式下两个数之间的最小距离。

定点整数精度:最小距离就是1;

定点小数精度:对于:an-1an-2···a0的最小距离是2-(n-1) 那么8位就是2-7= 1 128 {1}\over{128} 1281

浮点数精度(4,4):尾数:2-3 阶码 :2-7
所以2-3 × \times × 2-7=2-10

范围(8位原码为例)

定点小数:1111 1111 ~0111 1111
(隐含小数位在符号位之后)
即:-(1-2-7) ~ +(1-2-7)= - 127 128 {127}\over{128} 128127~ + 127 128 {127}\over{128} 128127

定点整数:1111 1111~0111 1111
(隐含小数在末尾)
即:-(27-1) ~ (27-1)= -127~ +127

浮点数(4,4):
0111 1111~0111 0111
即:-0.875 × \times × 27~+0.875 × \times × 27

8位机原码总结:

            精度              范围
定点整数:    1        -127/128 ~ +127/128 
定点小数:   1/128         -127 ~ +127
浮点数:   2^(-10 )    -0.875*2^7 ~ +0.875*2^7

可以看到从上往下精度越来越精,范围越来越窄。

规格化浮点数

例:
(-6.5)D=(-110.1)B
                = - 0.1101 × \times × 211(规格化浮点数)
                = - 0.01101 × \times × 2100(非规格化浮点数)
求几个特殊规格化数:
(4,4)规格化浮点数最大的数,最小的数,
离0最近(正的)的数。
a.最大:0111 0111,是规格化的
b.最小:0111 1111,是规格化的
c.离0最近(正的):1111 0001,不是规格化的,所以规格化的离0最近的数是:1111 0100

2.2.4阶码

引入:
3.28 × \times × 102+0.42 × \times × 103
=(0.328+0.42) × \times × 103
在计算机中我们可以用比较器比较2和3的数,输出3,
之后将0.328和0.42送到加法器中进行运算。
但是:如果是3.28 × \times × 10-2+0.42 × \times × 10-3呢?
-2是 1010,-3是1100,比较器比较出来的是-3大,不对。于是引入了移码,移动使其全为正数。
于是给出移码的运算规则
[ X ] 移 [X]_移 [X]= [ X ] 补 [X]_补 [X]+偏置值。
偏置值有两种。一种是2n-1一种是2n-1-1。这里的n包括符号位。
也给出更简单的实现方案
偏置值为2n-1时,可以看成补码的符号位取反;
于是偏置值为2n-1-1时,可以看成补码的符号位取反后减1。
例: [ X ] 浮 [X]_浮 [X]= [ 11010111 ] 补 [11010111]_补 [11010111](4,4)
可得阶码:1101(补码形式)
如果用偏置值:
偏置值是24-1=1000,1101+1000=0101(1 0101)
补码形式1101,符号位取反为:0101
偏置值是24-1-1=0111,1101+0111=0100(1 0100)
补码形式1101,符号位取反后减1 是:
0101-1=0100
例题:
求:-14.25.写出(6,6)浮点数(阶码用移码表示,尾数用原码)
-14.25= - 1110.01
          = - 0.111001 × \times × 2100
6位阶码:000100求移码:补码形式符号位取反:100100
6位尾数:111100(位数不够,舍掉最后的1)
所以答案:100100111100

2.2.5 实用浮点数举例:IEEE 754标准

规定:
a 第一位(最高位)为尾数的符号,即整个数的符号
b 尾数用原码表示
c 尾数必须是规格化的。
即小数点后面是1,所以IEEE754标准将1隐藏。好处:尾数可以多表示一位。
在这里插入图片描述
第三个要求:
101.111=0.101111 × \times × 2100(上边的)
然而用IEEE标准表示:1.01111 × \times × 2^11(其中小数点前的1隐藏)
例题来体会:
求-32.75短浮点数IEEE标准表示
-32.75
= -100000.11
= -1.0000011 × \times × 2101
首位符号位:1
阶码(8位):00000101->10000101
尾数(32):1. 0000011 0000 0000 0000 0000
IEEE标准:11000010000000110000000000000000
用十六进制表示:
1100——C
0010——2
0000——0
0011——3
16个0——0000
所以用16进制表示为:C2030000H
求出:(C2430000)H=( ?)D

答案: - 48.75
·
·
·
·

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值