计算机组成原理-机器数、浮点数

浮点数机器数

    • 基础知识
      • 进制转换
      • 特殊码制
      • 定点数浮点数表示
        • 定点小数/定点整数
        • 原码、补码、反码、移码
    • 相关问题
      • 十进制转浮点机器数
      • 机器数加减

这一块也是非常的重要和基础,非常容易得分,但也非常容易错。
所以我今天决定把这些知识点稍微过一遍,如果我已经熟记于心的一些东西我就会提一嘴,如果大家对于这些问题有所疑问,可以留言,也可以自行再百度学习。

基础知识

首先就要具备一些相关的知识背景,我大概想到的就说一下如果有所缺漏就自行补足。

进制转换

1.十进制、二进制、十六进制相互转换
2.整数、小数十进制转二进制。
ps:我之前写题的时候不是很理解二进制该如何转换成十进制的小数,趁现在这个功夫学习了一下,其实也就是对位相乘,只不过乘的是负次方,验算结果是对的。数为0.875
计算机组成原理-机器数、浮点数_第1张图片

特殊码制

说到特殊码制我觉得更多的应该是区别于BCD码,BCD码最大的特点应该就是BCD码是用4位二进制码表示一个十位数,而与进位和加和无关…我怎么突然不会说话了,突然就不知道该怎么解释了。
我用一个例子最清晰的表达吧。
计算机组成原理-机器数、浮点数_第2张图片就是 BCD码转的时候不用考虑进位

定点数浮点数表示

什么是定点数,就是小数点确定,不变的数,与之相对应的就是小数位会变动的浮点数。

定点小数/定点整数

定点小数就是纯小数,小数点位置在符号位之后,小数之前
定点整数就是纯整数,小数点位置在个位之后

原码、补码、反码、移码

关于这几种码制需要掌握原码到这些码该怎么变。

原码 补码 移码
正数 x x x+偏置常数
负数 x 符号位不变,数值取反,末位加一 x+偏置常数

相关问题

十进制转浮点机器数

在题目中可能会给到机器数的表示格式,给出一下几个量,我们在此介绍一下
数符:表示该数的正负
阶符:表示阶数的正负,如果是正阶,例如2次方就直接可以拿来拿来跟阶码一起并用
阶码:用来存储阶数。一定要记住如果题目中偏置常数且阶码用移码表示,一定不要忘记加上偏置常数(我踩过的坑)
尾数:小数位二进制
题目设置方式一般是给你一个格式,给一个十进制数,让你转成浮点机器数:
计算机组成原理-机器数、浮点数_第3张图片方法论如下

把十进制数化成二进制
规格化
对应写成机器数

根据这个方法我们对这个数进行操作
首先把十进制数化为二进制数
计算机组成原理-机器数、浮点数_第4张图片顺便补一下前面的一些操作,供大家对照
然后我们进行规格化
规格化法则:
如果尾数用原码规格化
正数:0.1xxxx形式
负数:1.1xxxx形势
补码规格化
整数:0.1xxxx形式
负数:1.0xxxx形式

根据这个法则来看,10000000.11由于是整数,应该要将小数点移到第一个1的前面,移位8位,即阶码-2+8=6
结果为0.1000000011*2^6
规格化之后我们就可以对应的写成机器数
数符-正数=0
阶符+阶码=6+16(偏置常数)=22-10110
尾数=1000000011
整体为0101 1010 0000 0011 0000-5A030H

机器数加减

既然我们已经可以转成机器数,这个时候顺理成章发生的一件事情就是我们有了另一个机器数,就可以加减了!
但是通常我们的两个机器数阶数会不一致,这个时候我们关于这类题目的处理方式就会有所增加
方法论如下

对阶 使两个操作数的小数点位置对齐(小向大对齐)
尾数求和 对阶后的尾数相加减
规格化 按正常规格化进行
舍入(针对尾数) 如果尾数溢出就需要舍入
溢出判断(针对阶数) 不要加偏置常数进行判断是否溢出

我们在之前的5A030H基础上再加一个机器数D9F00H,让其进行机器数相加
1.化浮点数
计算机组成原理-机器数、浮点数_第5张图片这个时候我们发现与之前的0.1000000011*2^6阶数相等故不需要对阶
接下来直接进行尾数加和
计算机组成原理-机器数、浮点数_第6张图片进行舍入判断时发现尾数此时并没有超出14位,无需舍入
同时溢出判断,6位阶码也没有溢出,没有溢出
直接写成机器数即可-答案为C0C00H

你可能感兴趣的:(考研复习-计算机组成原理,底层应用开发)