• 【王道计算机组成原理】第二章 数据的表示和运算


    2.1 数制与编码

    2.1.1 进位计数制

    image-20220717172615222

    各种进制的常见书写方式:

    image-20220717204709873

    r进制

    image-20220717172854596
    不同符号反映不同权重
    • 十进制
    image-20220717173047318
    • 推广:r 进制计数法
    image-20220717173202855

    任意进制->十进制

    image-20220717204449285

    二进制<->八进制、十六进制

    image-20220717204558859

    十进制->任意进制

    image-20220717204923680

    eg:75.3

    整数部分 = 75:

    image-20220717204959578

    小数部分 = 0.3:

    image-20220717205129864

    • 十进制->二进制(拼凑法)

    十进制:260.75 -> 1 ¦ 0 0 0 0 ¦ 0 1 0 0 . 1 1

    整数部分:260 = 256 + 4 = 2 8 + 2 2

    小数部分:0.75 = 0.5 + 0.25 = 2 -1 + 2 -2

    十进制:533.125 -> 1 0 ¦ 0 0 0 1 ¦ 0 1 0 1 . 0 0 1

    整数部分:533 = 512 + 16 + 4 + 1 = 2 9 + 2 4 + 2 2 + 2 0

    小数部分:0.125 = 2 -3

    image-20220717211551359

    真值和机器数

    image-20220717211638302

    image-20220717211702825

    2.1.2 BCD码 *

    (考纲已删)

    image-20220717211933200

    如 985 的 8421 码为:1001 1000 0101

    image-20220717213623344 image-20220718001528112

    其他BCD码

    image-20220718002355582
    image-20220718002415419

    2.1.3 定点数的编码表示

    无符号整数的表示和运算

    image-20220719160615081
    • 无符号整数在计算机硬件内如何表示

    计算机硬件能支持的无符号位数是有上限的,是由机器字长限制的:

    image-20220719162748080

    无符号整数的表示:

    image-20220719162929376
    • 加法、减法运算的实现原理

    ✨ 加法:

    image-20220719163028532

    ✨ 减法:

    image-20220719163251062
    A是被减数、B是减数

    减数B进行变形:

    image-20220719163527493

    减法变加法:

    image-20220719163622171
    image-20220719163641131

    带符号整数的表示和运算

    image-20220719163949140 image-20220719164020703

    原码表示

    image-20220719164143574

    原码缺点:

    image-20220719172133984

    补码表示

    • 原码->反码->补码的转换
    image-20220719172347909 image-20220719172604569
    • 补码的加法运算

    例1:

    image-20220719172825275

    例2:

    image-20220719173314394
    • 补码的减法运算
    image-20220719173612119

    对比无符号整数的减法运算

    image-20220719174440069

    例3:

    image-20220719174651242
    image-20220719174714275

    移码表示

    • 原、反、补、移码的转换

    image-20220719175127284

    • 移码
    image-20220719175247117 image-20220719175358051

    原/反/补/移码特性对比

    image-20220719174759070 image-20220719175439794

    image-20220719175600211

    练习:

    image-20220719175717830

    定点小数的表示和运算

    • 定点整数、定点小数
    image-20220719201926156
    • 原码
    image-20220719202058636
    • 定点小数原、反、补码的转换
    image-20220719202145998
    • 定点小数的加/减运算

    image-20220719202455961

    • 定点小数VS定点整数

    image-20220719202549486

    补码不同于原码、反码,补码的0只有一种表示形式,所以多出来的那位我们人为使它用以表示-1。

    image-20220719203944180

    例1:

    整数补码的加法运算:

    image-20220719204245241

    小数补码的加法运算:

    image-20220719204619787

    例2:

    整数补码的加法运算:

    image-20220719204747417

    小数补码的加法运算:

    image-20220719204819007

    例3:

    整数补码的减法运算:

    image-20220719204844665

    小数补码的加法运算:

    image-20220719204946712

    2.2 运算方法和运算电路

    2.2.0 奇偶校验码*

    (大纲已删)

    image-20220719205329025

    奇偶校验码

    image-20220719211620754

    例:

    image-20220719212024599

    重点体会 异或运算

    2.2.1 ALU算术逻辑单元

    (电路基本原理&加法器设计)

    image-20220729235907133
    • ALU
    image-20220730000949213
    一般计算机的位数就是机器字长
    • 最基本的逻辑运算
    image-20220730001249210
    与、或 双目运算;非 单目运算
    image-20220730001435493
    • 复合逻辑

    image-20220730001915182

    同或:

    image-20220730002002293
    • 用门电路求偶校验位
    image-20220730002139218
    • 一位全加器(实现加法运算)

    image-20220730002505303

    • 串行加法器
    image-20220730002607661
    • 并行加法器
    image-20220730002654442

    运算速度很大程度上取决于进位速度


    image-20220730002950087

    2.2.2 并行进位加法器

    image-20220730221748359
    • 怎样更快的产生进位?
    image-20220730221900174

    为了方便观看,记 Gi、Pi

    image-20220730222017730
    注:这里 ‘+’ 表示 ‘或运算’;‘·’ 表示 ‘与运算’
    高位运算需要用到低位计算出的 G i、P i

    一般以4个FA作为1个加法器

    本小节不是重点,慢慢理解

    2.2.3 补码加减运算器

    • 加法器原理
    image-20220730222908715
    • 回顾:补码加/减法运算方法
    image-20220730223638300
    • 实现补码加减运算:

    有符号数:

    image-20220730224909446

    无符号数同:

    image-20220730224955045

    底层硬件计算逻辑相同,但是 有符号数 和 无符号数 判断溢出的方式不同

    2.2.4 标志位生产

    (判断溢出的方式)

    image-20220730225751300

    image-20220730230235586

    image-20220730230536589

    2.2.5 移位运算

    image-20220730230616859

    算数移位

    对于10进制:

    image-20220730231454093

    对于2进制:

    ⚪ 原码

    定点整数:

    算数右移:

    image-20220730231730064

    算数左移:

    image-20220730232226489
    定点小数:
    image-20220730231937281

    ⚪ 反码

    image-20220730232118594

    ⚪ 补码

    image-20220730232634156
    • 小总结:
    image-20220730232808957
    • 应用举例:

    计算机的乘法是基于 算数移位 和 加法 进行的

    image-20220730233001750

    逻辑移位

    image-20220730233033939
    • 应用举例
    image-20220730233200230

    循环移位

    image-20220730233420303
    • 应用举例

    对于 大端存储(先存高字节再存低字节)和 小端存储(先存低字节再存高字节) 之间进行转换


    image-20220730233549075

    2.2.6 定点数运算

    乘法运算

    image-20220804162954065
    • 实现思想
    image-20220804163300322 image-20220804163416350

    回忆运算器的基本组成:

    image-20220804164113626

    · 原码的一位乘法

    原码一位乘法:

    image-20220804164214101

    最低位

    image-20220804164516640 image-20220804164713679 image-20220804164746020

    下一位的运算同上:

    image-20220804164946827 image-20220804165056048 image-20220804165107574

    再下一位:

    image-20220804165141218

    image-20220804165230423image-20220804165256818

    再下一位:

    image-20220804165256818 image-20220804165347628 image-20220804165409556

    最后的符号位不用参与运算,移位进行了 4 次 (即 n 次)

    最后修改符号位:

    image-20220804172316685
    • 做题手动模拟运算

    原码运算时用双符号位或单符号位都可以。但是为了避免和补码运算记混,建议用双符号位。

    image-20220804172800158

    · 补码的一位乘法

    image-20220804173556486
    • 补码的一位乘法

    辅助位是把MQ扩展了一位来存储

    MQ中的最低位指参与乘法运算的最低位(就是不算上 辅助位)

    CPU中所有的寄存器长度一般都是统一的,MQ多增加了一位,因此ACC、X也多加一位(多出来的一位可以用来表示 双符号位 的补码)

    被乘数采用双符号位的补码,而乘数采用但符号位的补码

    image-20220804175128286

    • 手算模拟

    image-20220804175154351


    image-20220804175436458

    除法运算

    image-20220804213410737
    • 实现思想
    image-20220804215355262 image-20220804215407976

    回忆运算器基本组成:

    image-20220804215459246

    · 原码除法:恢复余数法

    image-20220804220401803

    默认先上商1:

    image-20220804220509303

    上商1后计算结果11110送到ACC更新:

    image-20220804220615546

    ACC检测到符号位为1,即负数,说明应上商0,需要恢复:

    image-20220804220755130 image-20220804221006871

    ACC、MQ逻辑左移:

    image-20220804221227742

    确定商的下一位,同上,先上商1:

    image-20220804221351512 image-20220804221405041 image-20220804221421686

    下一位:

    image-20220804221439503 image-20220804221452880 image-20220804221523800 image-20220804221537134

    下一位:

    image-20220804221622291 image-20220804221644919 image-20220804221658146 image-20220804221709178

    下一位:

    image-20220804221726255

    计算符号位:为0

    最终结果:

    image-20220804221756755
    • 手算模拟:

    image-20220804222125747

    能否不恢复余数?----> 加减交替法(对恢复余数法的一种优化)

    image-20220804222534442

    image-20220804222847605

    image-20220804223201902

    定点小数除法规定 被除数 < 除数,否则结果会大于1,定点小数无法表示大于1的范围。

    硬件通过第一步的商来检测:正常情况第一步上商1得到的余数一定要是一个负值(若为正说明被除数 > 除数)

    · 补码除法:加减交替法

    与原码的加减交替法类似

    image-20220804225640019
    • 补码加减交替法:

    image-20220804230240232


    image-20220804230259033

    2.2.7 C语言类型转换

    image-20220804230829661

    2.2.8 数据的存储和排列

    • 大小端模式

    H:16进制 ; D:10进制 ; B:2进制

    image-20220804232421564
    • 边界对齐 存储方式

    image-20220804233045075

    字地址 转 字节地址 :字地址逻辑左移两位(即×4,因为上图中 1字 = 4B)

    半字地址 转 字节地址 :半字地址逻辑左移一位

    2.3 浮点数的表示与运算

    image-20220804233100507

    2.3.1 浮点数的表示

    • 定点数的局限性
    image-20220805163125361
    • 从科学计数法理解浮点数
    image-20220805164644534
    • 浮点数的表示
    image-20220805164835718

    例:

    image-20220805165418644 image-20220805165653190

    b的尾数丢失一位,会影响精度,如何优化:

    • 浮点数尾数的规格化

    仍以上面的 b 为例:

    image-20220805170547137

    浮点数尾数的规格化:

    image-20220805170806247
    • 规格化浮点数的特点
    image-20220805171259972

    负上溢、正上溢已从考试大纲删除


    image-20220805173245813

    2.3.2 IEEE754

    念作 “I triple E” image-20220805173418841

    • 回顾:
    image-20220805173625480

    image-20220805174041093

    移码偏置值取 2n-1 - 1:

    image-20220805174858258

    其中:

    真值 -128 = - 1000 0000 B

    移码 = - 1000 0000 + 0111 1111 偏置值比 -128的绝对值 更小

    移码位数只有 8 bit,所有的 ± 运算默认会再进行 mod 28 (即在原有的基础上加上 1 ¦ 0000 ¦ 0000)

    故该处:image-20220805174834351

    • IEEE754标准

    规格化的原码尾数,最高数值位一定是1,因此干脆将其隐藏起来,可以多利用一位。做题时 记得在小数点前加上1,即 1.M才是尾数真正的值

    IEEE754中将 阶码全1、全0用作特殊用途,故真值范围为 -126 ~ 127 (原本应为 -128 ~ 127,其中-128为全1、-127为全0,故减去两个数)

    image-20220805175827267

    上图中 float 偏置值: 2 8 - 1 - 1 = 128 - 1 = 127

    double 偏置值: 2 11 - 1 - 1 = 2 10 - 1 - 1 = 1023 即 011¦1111¦1111

    计算阶码真值时,可以将移码和偏移量 看作无符号数进行计算

    例:

    image-20220805180508426

    例:

    image-20220805215708038
    • IEEE754标准单精度浮点型能表示的最小绝对值、最大绝对值

    image-20220805220050356

    • 若要表示的数绝对值还要更小怎么办?
    image-20220805220647788
    image-20220805220705267

    2.3.3 浮点数的运算

    image-20220805220807745

    浮点数的加减运算

    image-20220805221849978

    例:

    image-20220805224004528

    • 舍入
    image-20220805224306408

    强制类型转换

    考试大多考察32位机器

    image-20220805224720628image-20220805224801542


    image-20220805224801542
  • 相关阅读:
    vue2 使用vue-org-tree 组件完整简单示例Demo vue2-org-tree
    力扣2596
    代码随想录算法训练营第7天|● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和 ● 总结
    谣言检测——(PSA)《Probing Spurious Correlations in Popular Event-Based Rumor Detection Benchmarks》
    锐龙r5 6600u和r5 5600u区别 r56600u和r55600u对比
    WebRTC + Tensorflow.js 在运动健康类项目中的前端应用
    Codesys + BeagleBone PLC控制达到小儿科水平
    二叉树:什么样的二叉树适合用数组来存储?
    阿里面试失败后,一气之下我图解了Java中18把锁
    react native中使用Animated实现三张图片动态旋转效果
  • 原文地址:https://blog.csdn.net/weixin_48434658/article/details/126187025