小奥的学习笔记

  • Home
  • Learning & Working
    • Speech Enhancement Notes
    • Programming language
    • Computer & DL
    • MOOC
  • Life
    • Life Time
    • Thinking & Comprehension
    • Volunteer
    • Plan
    • Travel
  • Footprints
  • GuestBook
  • About
    • About Me
    • 个人履历
    • 隐私策略
  1. 首页
  2. Study-notes
  3. Computer & DL
  4. Linux
  5. 正文

计算机组成原理笔记第六章(6.1~6.2)

2018年10月24日 2281点热度 0人点赞 0条评论

6.1 无符号数和有符号数

一、无符号数

寄存器的位数,反映无符号数的表示范围:

8位:0~255;16位:0~65535

二、有符号数

1.机器数与真值

计算机没有硬件来表示小数点,小数点的位置只能通过约定的方式确定。

真值(带符号的数) 机器数(符号数字化的数)
+0.1011 0 小数点 1011
-0.1011 1 小数点 1011
+1100 0 1100 小数点
-1100 1 1100 小数点

2.原码表示法

(1)定义:

整数:[x]原=0,x(当0<=x<2n)2n -x(-2n <x<=0)

小数:[x]原=x(当0<=x<1)1-x(-1 <x<=0)

例:求x=0的原码:

设x=+0.0000,则[+0.0000]原=0.0000;设x=-0.0000,则[-0.0000]原=1.0000

同理,对于整数[+0]原=0,0000,[-0]原=1,0000

故[+0]原≠[-0]原

3.原码的特点:简单、直观

但是用原码作加法,会出现如下问题:

要求 数1 数2 实际操作 结果符号
加法 + + 加 +
加法 + - 减 -/+
加法 - + 减 -/+
加法 - - 加 负

能否只作加法?找到一个与负数等价的整数来代替这个负数!

3.补码表示法

结论:

(1)一个负数加上“模”即得该负数的补数;

(2)一个整数和一个负数互为补数时,它们绝对值之和即为模数;

(3)正数的补数即为其本身;

(4)负数的补码=负数的反码+1。

但是补码的定义如下:

[x]补=2n+1+x(负整数),2+x(-1<=x<0(mod 2))

4.反码表示法

不再累述

5.三种机器数的小结

(1)最高位为符号位,书写上用“,”(整数)或“.”(小数)将数值部分和符号位隔开;

(2)对于正数,原码=补码=反码;

(3)对于负数,符号位为1,其数值部分原码除符号位外每位取反末位加1得补码,原码除符号位外每位取反得反码。

6.移码表示

补码很难直接判断其真值大小。

(1)移码的定义:

[x]移=2n+x

只有整数形式,没有小数形式。

(2)移码和补码的比较:

补码与移码只差一个符号位。

(3)真值、补码和移码的对照表

如图1.1所示。

图1.1 真值、补码和移码的对照表

(4)移码的特点

①若x=0,则[+0]移=25+0=1,00000(最高位为符号位),[-0]移=25-0=1,00000。所以[+0]移=[-0]移。

②当n=5时,最小的真值为-25=-100000,[-100000]移=25-100000=000000。

可见,最小真值的移码为全0。

用移码表示浮点数的阶码,能方便地判断浮点数阶码的大小。

 

6.2 数的定点表示和浮点表示

一、定点表示

是指小数点按照约定方式给出。无论是软件还是硬件开发人员,都必须遵循按照约定方式。

有以下两种形式:

1.

数符 小数点 数值部分

这说明表示的全为小数,若为补码,则能表示的唯一整数是-1。

数符 数值部分 小数点

这说明表示的全为整数。

由此我们可以把定点机分为两类,一类是小数定点机(形式1)和整数定点机(形式2)。

下面来说一下他们用原码、反码和补码表示的时候的范围。

表2.1 定点机的表示范围

小数定点机

整数定点机
原码 -(1-2-n)~(1-2-n)有2n+1个 -(2n-1)~ (2n-1)
补码 -1~(1-2-n) -(2n)~(2n-1)
反码 -(1-2-n)~(1-2-n) -(2n-1)~ (2n-1)

 

二、浮点表示(重点)

0.为什么要在计算机引入浮点数表示?

①编程困难,程序员要调节小数点的位置;

②数的表示范围小,为了能表示两个大小相差很大的数据,需要很长的机器字长;

③数据存储单元的利用率往往很低。

如图2.1所示。

图2.1 浮点表示

    注意:尾数是小数、可正可负,阶码是整数、可正可负。当r=2尾数中的每一位二进制数就表示了尾数的一位;当r=4,尾数当中的2位二进制数表示了1位四进制尾数。如图中所示,原来数是11.0101,当我们固定小数点,将数字右移两位的时候,表示数字变为了原来的四分之一,所以阶码为10(10是十进制的2,22=4);当我们只右移1位时,表示数字变为了原来的二分之一,所以阶码为1(1是十进制的1,21=2);同样,当左移2位的时候,数字变为了原来的四倍,所以阶码为-10,(10是十进制的2,2-2=1/4),剩余一个同理。在计算机中,只有打对号的两个数才能存储,其中第一种小数点后面第1位为1,称为规格化数。

1.浮点数的表示形式

图2.2 浮点数的表示形式

Sf表示浮点数的符号;n表示了浮点数的精度,m表示浮点数的表示范围,jf和m(实际是阶符和阶码)共同标识小数点的书记位置。

2.浮点数的表示范围

图2.3 浮点数的表示范围

上溢:阶码>最大阶码。下溢:阶码<最小阶码,按机器零处理。阶码都用原码来表示。

最小负数和最大正数的绝对值其实是一样的。最大正数的尾数最大为全1,阶码也为全1。这样的情况下,尾数为(1-2n),阶码为2m-1,故如图2.3所示。最大负数,最小正数同理。

实际上我们是由有限的个数表示无限多的实数。

练习:机器数字长为24位,欲表示±3万的十进制数,试问在保证数的最大精度的前提下,除阶符、数符各取1位外,阶码、尾数各取几位?

因为2的14次方=16384,2的15次方是32768,满足要求。阶码应该在±15。所以定点数15位二进制数可以反映±3万之间的十进制数。因为要保证数的最大精度,所以尾数尽可能的长,所以阶码位数尽可能短,所以阶码是4位。24-4-1(阶符)-1(数符)=18,为尾数的长度。

3.浮点数的规格化形式

为了保证尽可能保证浮点数的精度,所以要对浮点数进行规格化。

若r=2,尾数最高位为1;

若r=4,尾数最高2位不全为0;

若r=8,尾数最高3位不全为0。

基数不同,浮点数的规格化形式不同。

4.浮点数的规格化

表2.1 浮点数的规格化形式

基值 规格化形式 规格化方式
r=2 左规 尾数左移1位,阶码减1
右规 尾数右移1位,阶码加1
r=4 左规 尾数左移2位,阶码减1
右规 尾数右移2位,阶码加2
r=8 左规 尾数左移3位,阶码减1
右规 尾数右移3位,阶码加3

基数r越大,可表示的浮点数范围越大,基数r越大,浮点数的精度越大。

例如:设m=4,n=10,r=2。尾数规格化的浮点数表示范围:

最大正数:2+1111*0.1111111111=215*(1-2-10);

最小正数:2-1111*0.1000000000=2-15*2-1=216;

最小负数:-215*(1-2-10);

最大负数:-2-15*2-1=-216。

三、举例

例6.13:将写成二进制定点数、浮点数及在定点机和浮点机中的机器数形式。其中树枝部分均取10位,数符取1位,浮点数阶码取5位(含1位阶符),尾数规格化。

解:设x=,则二进制形式为0.0010011,定点表示为0.0010011000,因为要求10位,所以补3个零。

浮点规格化表示,因为规格化,所以小数点后第一位必须是1,所以表示为。

定点机中,原码=补码=反码=0.0010011000

浮点机中,[x]原=1, 0010;0.1001100000(第一位的1是阶码,0010是阶符,0.1001100000是尾数)

[x]补=1,1110;0.1001100000

[x]反=1,1101;0.1001100000

例6.14:将 –58 表示成二进制定点数和浮点数,并写出它在定点机和浮点机中的三种机器数及阶码 为移码、尾数为补码的形式(其他要求同上例)。

解:设x=-58,则写为二进制表示为x=-111010,定点表示为-0000111010,浮点规格化形势为-(0.1110100000*2110)。定点机中,[x]原=1,0000111010,[x]反=1,1111000101,[x]反=1,1111000110。

浮点机中[x]原=0,0110;1.11101000000;[x]补 = 0, 0110; 1. 0001100000;

[x]反 = 0, 0110; 1. 0001011111        [x]阶移、尾补 = 1, 0110; 1. 0001100000

机器零

浮点数尾数为0时,不论其阶码为何值按机器零处理。

当浮点数阶码等于或小于它表示的最小数时,不论尾数为何值,按机器零处理。

总的来说,是以下两种情况:

(1)x,xxxx;0.0000…000

(2)(阶码-16)1,0000;x.xx…xxx

当阶码用移码,尾数用补码表示时,机器零为0,0000;0.00…0

这非常有利于机器中“判0”电路的实现。

四、IEEE 754标准

格式如图2.4所示。

图2.4 IEEE 754标准浮点数示意图

    由于尾数为规格化表示,那么最高位一定是1,所以可以把这1位省略掉,这样可以提高精度。如表2.2所示

表2.2 IEEE 754数的类型

类型 符号位S 阶码 尾数 总位数 表示范围
短实数 1 8 23 32
长实数 1 11 52 64
临时实数 1 15 64 80

 

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 计算机组成原理
最后更新:2018年10月24日

davidcheung

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

搜索
欢迎关注我的个人公众号
最新 热点 随机
最新 热点 随机
DEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架 奥地利匈牙利九日游旅程 论文阅读之Study of the General Kalman Filter for Echo Cancellation 小奥看房之鸿荣源珈誉府 杭州往返旅途及西溪喜来登和万怡的体验报告 2022年的第一篇碎碎念
奥地利匈牙利九日游旅程小奥看房之鸿荣源珈誉府论文阅读之Study of the General Kalman Filter for Echo CancellationDEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架
2014.9—2015.1的计划(证书考试)安排 《鸟哥的Linux私房菜》(基础篇)笔记整理(第13章)Part.1 Java语言程序设计(进阶)(第二章)整理 暑假回顾奥特曼的安排 莱芜公交线路整理(201301204版) 个人资料
标签聚合
leetcode Java linux python学习 生活 学习 高中 Python 鸟哥的linux私房菜 算法
最近评论
davidcheung 发布于 5 个月前(02月09日) The problem has been fixed. May I ask if you can s...
tk88 发布于 5 个月前(02月07日) Hmm is anyone else having problems with the pictur...
cuicui 发布于 9 个月前(10月20日) :wink:
niming 发布于 10 个月前(09月19日) 同级校友,能刷到太巧了
davidcheung 发布于 2 年前(08月16日) 我得找一下我之前整理的word文档看一下,如果找到了我就更新一下这篇文章。
Nolan 发布于 2 年前(07月25日) 您的笔记非常有帮助。贴图不显示了,可以更新一下吗?
davidcheung 发布于 3 年前(06月19日) 到没有看webrtc的代码。现在主要在看我们公司的代码了。。。只是偶尔看一看webrtc的东西。。。
aobai 发布于 3 年前(03月13日) gain_change_hangover_ 应该是每三个block 只能够调整一次,这样保证每帧...
匿名 发布于 5 年前(12月30日) 烫
小奥 发布于 5 年前(12月12日) webRTC里面的NS本身我记得就是在C++里面呀

COPYRIGHT © 2025 小奥的学习笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

陕ICP备19003234号-1

鲁公网安备37120202000100号