问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

笔记| 计算机系统基础:02-逻辑运算电路

发布网友 发布时间:2022-12-23 05:56

我来回答

1个回答

热心网友 时间:2024-08-27 03:44

如果没学过基础逻辑电路,应该是有专门的一门课《数字逻辑电路》,那门课里有更详细的介绍。因为比较注重逻辑推理,据大学的数电老师说,自从教了这门课,反正他打桥牌就没怎么输过。在计算机系统基础这门课里只是引用一些逻辑部件,更重要的是理解C语言中各类运算是怎么通过电路实现的,由此可能存在怎样的溢出问题,这才是我们学习的重点。

另外,推荐大家一本书《编码:隐匿在计算机软硬件背后的语言》,可以看成是“如何一步步搭建一台计算机”,但是却一点都不晦涩难懂,非常生动有趣哦。

从运算符无法区分,由X的类型决定:

无符号数和带符号数加减运算都用以下部件完成:

注:其实所谓的产生溢出,无非就是最后运算的结果超出了当前类型能表示的范围,所以同样两个数相加减,当成无符号数或有符号数,溢出结果就可能不同。另外虽然我们上面进行了分类讨论,但是对于输入到整数加减运算器中的两个数,计算机可不管你是无符号数还是带符号数,一律都按同样的方式进行运算,然后把标志位存下来,至于你要拿这个结果当无符号数还有符号数,或者判断是否借位/溢出,都是你的事,这一点要记在心里。

两个n位整数相乘,结果只取2n位乘积中的低n位,高n位可以用来判断溢出:

需要注意计算机硬件是不判溢出的,仅保留2n位乘积,供软件使用,所以程序需进行一些防溢出的处理。

另外,整数乘法运算比较耗费时钟周期,因此编译器在处理变量与常数相乘时,往往用移位、加法和减法的组合来代替。如:x20 = x(16+4) = (x<<4)+(x<<2),之前记得左移可能产生溢出,所以不论是否溢出,两种运算方式结果都是一样的。

对于整数除法外,因为商的绝对值不可能比被除数的绝对值大,所以不会发生溢出,只有一种例外带符号整数的-2n-1/-1 = 2n-1,记得我们介绍补码时曾说过补码能增加表示一个最小负数吗?不过它没有对应的正数,所以如果对它除-1,就发生溢出了。

另外,整数除法运算更耗时钟周期,所以为了缩短运算时间,编译器在处理一个变量与一个2的幂次形式的整数相除时,常用逻辑/算术右移运算来实现。如:3 = 12/4 = 0000 1100 >> 2 = 0000 0011 = 3,-3 = -12/4 = 1111 0100 >> 2 = 1111 1101 = -3。

整数除法是有可能不能整除的,那就必须采用朝零舍入的截断方式。

若两个规格化浮点数为A = Ma·2Ea,B = Mb·2Eb,则:
A±B = (Ma± Mb·2-(Ea-Eb))·2Ea(假设Ea>= Eb
A*B = (Ma* Mb)·2(Ea+Eb)
A/B = (Ma/ Mb)·2(Ea-Eb)

以上运算有可能出现几种情况:
阶码上溢:正指数超过最大允许值(127) => +∞/-∞/溢出
阶码下溢:负指数超过最小允许值(-126) => +0/-0
尾数溢出:最高有效位有进位 => 右规 (结果不一定溢出)
非规格化尾数:数值部分高位为0 => 左规
右规或对阶时,右段有效位丢失 => 尾数舍入 (可以运算过程中添加保护位)

举例说明如何计算浮点数加/减法:
0.5 + (-0.4375)
= 1.000 x 2-1+ (-1.110 x 2-2) (规格化)
= 1.000 x 2-1+ (-0.111 x 2-1) (对阶,小阶向大阶看齐,尾数右移)
= 0.001 x 2-1(尾数加减)
= 1.000 x 2-4(规格化,左规:左移一位,阶码减1,判断是否有阶码溢出)
= 0.0625 (是否需要考虑舍入;如果尾数是0,则需将阶码也置0,表示0)

在尾数右移的过程中,可能会发生超出规定位数的情况,可以在尾数右边放一个保护位和一个舍入位,用来保护对阶时右移的位或中间结果,当左规时被移入尾数中,作为舍入判断的依据。
举个例子:(假设尾数只有3位有效位)
0.59375 = 0.5 + 0.09375 = 1.00 x 2-1+ 1.10 x 2-4= 1.00 x 2-1+ 0.00 x 2-1(没有附加位)= 1.00 x 2-1= 0.5
0.59375 = 0.5 + 0.09375 = 1.00 x 2-1+ 1.10 x 2-4= 1.00 x 2-1+ 0.0011 x 2-1(两位附加位)= 1.0011 x 2-1= 1.01 x 2-1(舍入进位) = 0.625 (结果比上面更精确)
IEEE 754舍入的方式主要有就近舍入(舍入为最近可表示的数),正向舍入(+∞方向),负向舍入(-∞方向),和朝0方向舍入(正数floor,负数ceil)

C语言中有float和double类型的浮点数,分别对应IEEE 754单精读浮点数格式和双精度浮点数格式,那么在类型强制转换的时候可能会有什么问题?(这就是为什么我们要学习数据在计算机中真正的存储形式)



注:文中图片来源于mooc官网

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
和面的和是什么读音? win10 应用打不开。全都打不开。 进入win10打不开软件 win10电脑软件都打不开是什么原因win10突然软件都打不开软件是怎么回事... 软件打不开怎么办win10电脑点不开软件最简单办法 请问下,离厦门市岛内的台湾路的国联大厦最近的建设银行和农业银行... 从巴黎都市到建设银行怎么坐公交车,最快需要多久 东莞万江官桥窖离建设银行哪路车最近? 建行七支分行有那些公交车经过 佛山哪里有飞越丛林拓展 相关和有关两个词意的区别在哪 大厅窗帘选择什么颜色显得好看 佛山地区有什么能推荐给朋友玩的好地方吗? 美容院诱导消费犯法吗 描写生漆的诗句 寸字怎么写 一个木字旁,左边一个田字,下面一个寸字,念什么? 车、君、田、寸能组成什么字? 新能源基地项目是什么意思 怎样提高新能源汽车供给数量画图表示 肉肉露珠怎么分盆 多肉怎么换盆多肉植物如何换盆 多肉怎么移盆如何给多肉移盆 入党申请书没写此致敬礼怎么办 我跟我女朋聊了半年了,话题很少,现在基本都不怎么聊天了,我该怎样聊... 入党材料奖学金证书要复印件吗 怎么跟朋友聊天 入党志愿书编号可以告诉别人吗 带老婆去和自己的朋友一起吃饭,老婆却在桌子下面给朋聊QQ? 我老婆背着我和别人异性朋聊得很亲热,我该怎么办 济南哪里有皮衣护理店 湘潭哪里有专门护理皮衣的店子? 词中 迷蝶无踪晓梦沉 一句是什么意思 关于描写蝴蝶的诗句 观其语意,乃以妹丧而去,不缘督邮翻译 ...而我却散发着单身的清香 英语翻译 语法必须正确 何谓割韭菜和镰刀? 林独以为周室之兴,祚由后稷,汉业特起,功不缘尧 怎么翻译?谢谢了 求描写深宫嫔妃争斗的古诗 代持股协议有什么风险 白发渐稠啥意思? 脸上脱皮的原因是什么 一路艰辛不惧,白发沧桑几许是什么意思 六年级科学小论文500字 六年级科学小论文 老身的引证解释 唏嘘什么意思是什么 唏嘘什么是什么意思 PS4游戏dreamsUniverse怎么改中文? vocaloid4怎么导入呼吸音 VOCALOID3能用VOCALOID4的音源吗?