💻
QMMMS的笔记
博客
  • QMMMS的笔记
  • agent
    • MCP的背景、原理和开发
    • Agent 历史与背景
    • Agentic Workflows
    • 环境检查与基础工具
    • Tool Call
    • 工具与运行时的值
    • temp
    • 处理 Tool Call error
    • trick
  • algorithm
    • 线性结构
    • 二叉树
    • 图
    • 查找
    • 排序
    • 动态规划
    • 优化方法
    • 数学
    • 迁移至Java
  • computer_composition
    • 系统总线
    • 存储器
    • 输入输出系统
    • 计算机的运算方法
    • 指令系统
    • 补充
  • computer_network
    • 引入
    • 应用层
    • 传输层
    • 网络层(数据平面)
    • 网络层(控制平面)
    • 链路层
    • 常见问答
    • 实验
  • database
    • SQL实战
    • 关系代数
    • 数据库设计
    • 规范化
    • 数据库基本概念
    • 查询原理
    • 数据库恢复技术
    • 并发控制
  • dev_tools
    • Git
    • Nginx
    • Spring
    • LangChain
    • PyTorch Cheat Sheet
    • MyBatis
    • MySQL Cheat Sheet
    • MySQL 补充
    • Redis
    • Docker
    • RocketMQ
    • Chrome
  • linux
    • Linux基础命令与使用
    • 文件与权限
    • 文件与目录操作
    • 权限属性高级
    • 命令与文件的查找
    • 文件压缩和打包
    • vim编辑器
    • shell变量
    • 命令补充
    • 数据流重定向
    • 管道命令
    • shell脚本
    • 用户管理
    • 用户间交流
    • 计划任务
    • 进程管理
    • 软件管理
    • 认识系统服务
    • 运维常用命令
    • 常用命令
  • llm
    • 大规模语言模型概述
    • 分布式训练概述
    • 有监督微调概述
    • 强化学习与LLM
    • LLM评估概述
    • 大模型应用
    • 理解大模型
    • 量化
    • 预训练
    • 上下文学习
  • machine_learning
    • 引入
    • 大致正确学习
    • 一致收敛
    • 偏差还是过拟合?
    • 可学习的充要条件
    • 非均匀可学习性
    • 计算复杂性
  • mathematics
    • 概率与统计基础
    • 线性代数基础
  • operating_system
    • 操作系统基本概念
    • 进程和线程
    • 同步,互斥与死锁
    • 内存管理
    • 文件系统
    • I/O系统
    • 保护与安全
    • 《现代操作系统》
  • statistical_learning
    • 统计学习引入
    • 线性回归
    • 分类
    • 重抽样方法
    • 线性模型选择与正则化
    • 非线性模型
    • 基于树的方法
    • 支持向量机
    • 无指导学习
    • 马尔科夫链和蒙托卡罗方法简明理解
    • R语言速查
  • deep_learning
    • basic_concepts
      • 逻辑回归与损失函数
      • 神经网络
      • 正则化、预处理、权重初始化
      • 优化算法
      • 机器学习策略
      • 复习:从计算机视觉的角度
      • 卷积神经网络
      • 深度卷积网络示例
      • 计算机视觉任务
      • 循环神经网络
      • 自然语言处理任务
      • 注意力
      • Transformers 家族
      • 显卡扫盲
      • 强化学习概述
    • semi-supervise
      • 半监督学习简介
      • Consistency Regularization
      • Proxy-label Methods
      • Holistic Methods
      • Generative Models
      • Graph-Based SSL
      • Self-Supervision for SSL
      • Other SSL methods
  • programming
    • cpp
      • STL
      • C++基础
      • 内存管理
      • 面向对象
    • java
      • 环境和介绍
      • 注释
      • String
      • 面向对象思想
      • Object
      • 包
      • 访问权限修饰符
      • 初始化块
      • 接口
      • 内部类
      • 注解
      • 枚举
      • 集合框架
      • List
      • Map
      • 泛型
      • 迭代
      • IO与流
      • 序列化
      • 异常
      • Lambda
      • Stream流
      • Socket
      • 缓冲
      • 命名规范
      • 拆箱装箱
      • 值传递
      • 深拷贝
      • 反射
      • JVM
      • 并发编程基础
    • python
      • 并发编程
      • 环境管理
  • software_engineering
    • basic_concepts
      • 系统分析与设计概述
      • 规划
      • 需求分析与原型设计
      • 项目管理
      • 建模
      • 数据库设计
      • 架构
      • 配置管理
      • 测试管理
      • 安全
      • 编码原则
      • 微服务
      • 补充内容
    • software_testing
      • CMMI基础
      • PPQA与SQA
      • 软件测试基础
      • 黑盒测试
      • 白盒测试
      • 集成测试
      • 系统测试
      • 测开面试补充
由 GitBook 提供支持
在本页
  • 有符号数的机器数与真值
  • 2. 原码表示法
  • 3. 补码表示法
  • 4. 反码表示法
  • 5. 移码表示法
  • 6. 数的定点表示和浮点表示
  • 7. IEEE 754 标准
  • 8. 移位运算
  • 9. 加减法运算
  • 10. 乘法运算
  • 实现
  • 原码乘
  • 11. 除法运算
  • 实现
  • 原码除法
  • 12. 浮点四则运算
在GitHub上编辑
  1. computer_composition

计算机的运算方法

上一页输入输出系统下一页指令系统

最后更新于1年前

参考:https://blog.csdn.net/SX123q/article/details/124597298

无符号数特点:保存时只有数值位,没有符号位。假如使用寄存器保存无符号数,那么:寄存器的位数反映了无符号数的表示范围。例如:

  • 寄存器为 8 位,无符号数表示范围为 0~255

  • 寄存器为16位,无符号数表示范围为 0~65535

有符号数的机器数与真值

一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为 0, 负数为 1

将带符号位的机器数对应的真正数值称为机器数的真值

机器数与真值

2. 原码表示法

整数定义如下:

{0,x2n>x≥01,−x0≥x>−2nx为真值,n为整数的位数\begin{cases} 0,x \qquad 2^n > x \geq 0 \\ 1,-x \quad 0 \geq x > -2^n \end{cases} \qquad x为真值,n为整数的位数{0,x2n>x≥01,−x0≥x>−2n​x为真值,n为整数的位数

对于 $2^n-x$ 的解释:数值部分位数为 n,符号位如果加一的话,实际上就相当于给这个数据的绝对值加上了 $2^n$

小数定义如下:

{x1>x≥01−x0≥x>−1\begin{cases} x \qquad \quad 1>x \geq0 \\ 1-x \quad 0 \geq x > -1 \end{cases}{x1>x≥01−x0≥x>−1​

原码的特点:简单、直观。但是用原码有如下问题:

例题

3. 补码表示法

什么时候-3和+9等价? $-3 \equiv 9 ,(mod ,12)$ ,称+9是-3以12为模的补数。

在这里,我们通过模,实现了用一个正数代表一个负数,实现了用加法替换减法

这里有两个结论:

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

  2. 一个正数和一个负数互为补数时, 它们绝对值之和即为 “模” 数

以计数器阐释补数的概念

在这里介绍了补数计算公式的原理

整数补码定义公式如下:

[x]补={0,x2n>x≥02n+1+x0>x≥−2n(mod   2n+1)x为真值,n为整数的位数[x]_补= \begin{cases} 0,x \qquad 2^n>x\geq0 \\ 2^{n+1}+x \quad 0>x\geq -2^n \quad (\mod \, 2^{n+1}) \end{cases} \qquad x为真值,n为整数的位数[x]补​={0,x2n>x≥02n+1+x0>x≥−2n(mod2n+1)​x为真值,n为整数的位数

小数公式如下:

[x]补={x1>x≥02+x0>x≥−1(mod 2)x为真值[x]_补= \begin{cases} x \qquad 1>x\geq0 \\ 2+x \quad 0>x \geq-1 \quad (mod \, 2) \end{cases} \qquad x为真值[x]补​={x1>x≥02+x0>x≥−1(mod2)​x为真值

当真值为负时,补码的快捷计算方法:

  1. 转为原码

  2. 除符号位外,其他每位取反

  3. 取反后,末位+1

如图

注意:补码定义公式是直接通过真值计算补码,而快捷求法是通过原码求补码

同时,当真值为负时,通过补码计算原码的方法:原码 可用 补码除符号位外 每位取反,末位加 1 求得

4. 反码表示法

反码整数定义

[x]反={0,x2n>x≥0(2n+1−1)+x0≥x>−2n(mod 2n+1−1)x为真值,n为整数的位数[x]_反= \begin{cases} 0,x \qquad\quad\quad\quad 2^n>x \geq 0 \\ (2^{n+1}-1)+x \quad 0 \geq x>-2^n \quad (mod \, 2^{n+1}-1) \end{cases} \qquad x为真值,n为整数的位数[x]反​={0,x2n>x≥0(2n+1−1)+x0≥x>−2n(mod2n+1−1)​x为真值,n为整数的位数

当真值为负数时,反码计算的快捷方式:原码除符号位外每位取反

小数

[x]反={x1>x≥0(2−2−n+x)0≥x>−1(mod 2−2−n)x为真值,n为小数的位数[x]_反=\begin{cases} x \qquad\quad\quad 1>x \geq 0 \\ (2-2^{-n}+x) \quad 0 \geq x>-1 \quad (mod \, 2-2^{-n}) \end{cases} \qquad x为真值,n为小数的位数[x]反​={x1>x≥0(2−2−n+x)0≥x>−1(mod2−2−n)​x为真值,n为小数的位数

原码、补码、反码小结

  1. 最高位为符号位,用指定符号将 数值部分 和 符号位 隔开

    • 整数用 ,

    • 小数用 .

  2. 对于正数:

    • 原码 = 补码 = 反码

    • 真值变原码:最左侧加符号位 0

  3. 对于负数,符号位为1,其数值部分

    • 原码除符号位外每位取反,末位+1 ----> 补码

    • 原码除符号位外每位取反 ----> 反码

补充一个小结论:二进制数,经过两轮取反末位+1操作,该二进制数是不变的。

5. 移码表示法

为什么要采用移码?原因在于使用补码难以直接比较数的大小,如下图:

公式如下:

x移=2n+x(2n>x≥−2n)x为真值,n为整数的位数x_移=2^n+x \quad (2^n>x \geq -2^n) \qquad x为真值,n为整数的位数x移​=2n+x(2n>x≥−2n)x为真值,n为整数的位数

注意,移码只定义了整数。移码表示例子:

移码可以很方便的比较整数的大小,如下图:

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

移码的特点

  • 用移码表示浮点数的阶码(整数),能方便地判断浮点数的阶码大小

  • 即0的移码是唯一的:1,n个0

  • 移码全0表示的是最小值 $-(2^{n-1})$ 全1时表示最大值 $2^{n-1}-1$如下图

6. 数的定点表示和浮点表示

关于定点和浮点的概念

计算机中,没有为小数点设置专门的存储逻辑。小数点的位置是以约定的方式给出的。当约定小数点在某一指定点时,这就是定点表示。

依据约定小数点位置的不同,可以将计算机分成两种:小数定点机、整数定点机。如图

为什么在计算机中要引入浮点数表示?定点数表示所拥有的缺陷?

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

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

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

浮点数的一般形式

N=S×rjS 尾数,j 阶码,r 尾数的基值N=S \times r^j \qquad S\,尾数,j\,阶码,r\,尾数的基值N=S×rjS尾数,j阶码,r尾数的基值

计算机中 r 取 2、4、8、16 等。如下例:

计算机中规定:(图中√标记的符合计算机要求)

  1. 尾数S 取纯小数(可正可负),并称尾数最高位为1的浮点数为规格化数(这里最高位指的是尾数的真值部分,即小数点后第1位)

  2. 阶码j 取整数(可正可负)

浮点数在计算机中的表示形式

浮点数的表示范围

练习题:

浮点数的规格化形式

基数r取值
规格化形式

2

尾数最高位为1

4

尾数最高 2 位不全为 0(2 个二进制位表示 1 个四进制位)

8

尾数最高 3 位不全为 0 (3 个 二进制位表示 1 个四进制位)

结论:基数不同,浮点数的规格化形式不同

浮点数的规格化

浮点数规格化的步骤:

  1. 尾数左移或后移,使尾数的最高几位满足规格化形式的要求

    • 尾数左移:左规(数据相对小数点向左移动)

    • 尾数右移:右规(数据相对小数点向右移动)

  2. 对阶码进行加减处理,使浮点数的真值不发生变化

如下示例:

规格化范围计算例题

需要注意到:规格化后浮点数的范围和未规格化浮点数的范围是不同的

机器零

7. IEEE 754 标准

该标准规定浮点数在计算机中的表示形式为:

该标准同时要求:尾数必须采用规格化表示。特点如下:

  • 尾数最高位必为1

  • 只有一个小数点位置,它就是阶码的小数点位置,同时也是尾数的小数点位置

  • 阶码为整数、尾数为纯小数

数值类型

符号位S

阶码

尾数

总位数

短实数

1

8

23

32

长实数

1

11

52

64

临时实数

1

15

64

80

8. 移位运算

如: 15.m = 1500.cm,相当于小数点右移两位。由于在计算机中小数点是按约定位置的,因此实际上小数点是不移动的。这种情况,我们称为:15 相对小数点左移两位(机器用语)

  • 左移:绝对值扩大

  • 右移:绝对值缩小

在计算机中,移位与加减配合,能够实现乘除运算

移位前提规则:符号位不变。移位添补规则如下:

1. 正数移位运算

结论:对于正数的移位运算,无论是原码、补码还是反码

  • 左移:相当于真值×2

  • 右移:相当于真值÷2

这里还有一个非常重要的结论:在移位运算中(这里☞低位丢失)

  1. 如果移位丢失的数位对应真值中的0,数的精度不会发生变化

  2. 如果移位丢失的数位对应真值中的1,数的精度会发生变化

低位丢失影响精度,高位丢失改变数的大小(出错)

在接下来的负数移位运算例子中,请着重关注移位丢失对数的精度造成的影响

2. 负数移位运算

当精度丢失时,补码、反码对应的原码和真值移位对应的原码就有差别了。

同时,将本例中反码左移三位,会发现运算结果出错。原因在于反码左移3位时丢失了一个高位0,而这个高位0对应真值中的高位1。

3. 算术移位的硬件实现

如图

4. 算术移位和逻辑移位的区别

9. 加减法运算

为什么不使用原码进行运算?

因为在前面的介绍中,我们知道使用原码进行加减法运算,需要根据数的符号判别到底是加法运算还是减法运算,实现复杂

加法运算公式

整数[A]补+[B]补=[A+B]补 (mod   2n+1)小数[A]补+[B]补=[A+B]补 (mod   2)整数 \qquad [A]_补+[B]_补=[A+B]_补 \, (\mod \, 2^{n+1})\\ 小数 \qquad [A]_补+[B]_补=[A+B]_补 \, (\mod \, 2)\quad整数[A]补​+[B]补​=[A+B]补​(mod2n+1)小数[A]补​+[B]补​=[A+B]补​(mod2)

减法运算公式 A−B=A+(−B)

整数[A−B]补=[A+(−B)]补=[A]补+[−B]补 (mod 2n+1)小数[A−B]补=[A+(−B)]补=[A]补+[−B]补 (mod 2)整数 \quad [A-B]_补=[A+(-B)]_补=[A]_补+[-B]_补 \, (mod\, 2^{n+1})\\ 小数 \quad [A-B]_补=[A+(-B)]_补=[A]_补+[-B]_补 \, (mod \, 2)整数[A−B]补​=[A+(−B)]补​=[A]补​+[−B]补​(mod2n+1)小数[A−B]补​=[A+(−B)]补​=[A]补​+[−B]补​(mod2)

结论:在补码加减法运算中,实际上都是进行的加法。需要注意,连同符号位一起相加,符号位产生的进位自然丢掉

需要注意到这两个例子中,关于机器数指定部分。(实际运算一定要考虑机器数长度)下为例1

例2

一个例子引出溢出的概念

  • 练习一出错原因:纯小数定点机,运算结果>1,发生溢出

  • 练习二出错原因:8位整数定点机,表示范围在 -128 ~ +127,运算结果超出了这个范围,产生溢出

溢出的概念:数据长度超出机器字长。(也可以说是,数据超过了机器所能表示数字的范围)

一位符号位判溢出

判别方法:参与操作的两个数符号相同,其结果的符号与原操作数的符号不同,即为溢出。

分三种情况进行分析这个方法的正确性:

  1. 两个数异符号:即符号为一正一负,既然这两个数能够在定点机中表示,它们本身是不会溢出的,那么经过运算,结果肯定也不会溢出。

  2. 同为正数:假如运算结果变为负号,那就是发生了溢出。参考上面 练习一

  3. 同为负数:加入运算结果变为正号,那就是发生了溢出。参考上面 练习二(练习二可以看成是两个负数相加)

两位符号位判溢出

首先需要明确:两位符号位 代表 以4为模

补充一个知识:假如以$2^k$为模,那么符号位就是k个。符号位有k个1或0,真值部分不变)

判别原理:

10. 乘法运算

实现

1. 分析笔算乘法

计算机如何实现笔算乘法的四个要点

  1. 符号位单独处理:采用一个异或电路对符号进行处理

  2. 乘数的某一位决定是否加被乘数:将乘数放在移位寄存器中,每判断一次最低位,乘数右移一位(最低位丢失)

  3. 4个位积一起相加:用一个寄存器进行累加操作

  4. 乘积的位数扩大一倍:用两个寄存器一起保存乘积

2. 笔算乘法改进

3. 改进后的笔算乘法过程(竖式)

如图 要注意:符号位是单独另外考虑的,这里只涉及数据位的计算。(整体移位的原因)

改进算法步骤分析

  1. 部分积初始值为 0

  2. 根据乘数末位的值判断部分积加值,结果记为 X

    • 乘数末位为1,部分积 + 被乘数

    • 乘数末位为0,部分积 + 0

  3. 将 2. 的结果X右移一位,形成新的部分积

  4. 乘数右移一位,末位移丢(因为末位判断过了,要判断倒数第二位的值了)。

  5. 从 2. 开始循环,直到乘数全部判断完成

注意:

  1. 每一轮循环执行了两次移位,X移位一次,乘数移位一次

  2. X移位时丢出来的低位数据,放在了乘数移位空出来的高位位置

  3. 这里用到了3个寄存器,有2个分别保存部分积高位和乘数(和部分积低位),具有移位功能。1个用于保存被乘数,不具有移位功能

  4. 当计算完成后,两个寄存器合起来才是结果。其中:

    • 部分积寄存器保存结果的高位部分

    • 乘数寄存器保存结果的低位部分

4. 小结

  1. 乘法 运算可用 加和移位实现。n位数据的乘法运算,需要n次加法运算和n次移位运算。n指运算数数据部分长度

  2. 由乘数的末位决定被乘数是否与原部分积相加, 然后 右移1位 形成新的部分积,同时 乘数 右移1 位 (末位移丢),空出高位存放部分积的低位。

  3. 被乘数只与部分积的高位相加

  4. 硬件:3个寄存器(其中两个有移位功能),1个全加器(n+1位,实现相加操作)

原码乘

1. 原码一位乘运算规则

如图

2. 原码一位乘递推公式

如图 其实和改进后的笔算乘法思想一致,那里看懂,这个就不会有问题

以下为例题

特点:

  1. 绝对值运算

  2. 用移位的次数判断乘法是否结束

  3. 逻辑移位

11. 除法运算

实现

如图

2. 笔算除法和机器除法的比较

实际上指明了机器运算如何实现笔算运算中的要点

需要注意的点:

  1. x 在第一次计算时,是被除数。从第二次开始,代表的就是余数了。而y始终代表除数。看恢复余数法中的例子

  2. 余数左移一位 和 除数右移一位 相对而言是等价的

  3. 使用1倍字长加法器原因:用余数左移一位代替除数右移一位后,不会产生更多的位数

原码除法

基本原理

计算机中除法运算的实现有两种:恢复余数法、不恢复余数法(加减交替法)。

1. 恢复余数法

假如求 [ x y ] 原 [\frac{x}{y}]_原 [yx]原,算法步骤:

  1. 被除数和除数进行比较,判断商值。计算机通过补码减法运算判断: [ x ∗ ] 补 − [ y ∗ ] 补 = [ x ∗ ] 补 + [ − y ∗ ] 补 x ∗ , y ∗ 代 表 绝 对 值 [x^]_补-[y]_补=[x^]_补+[-y]_补 \qquad x^*,y^*代表绝对值 [x∗]补−[y∗]补=[x∗]补+[−y∗]补x∗,y∗代表绝对值

    • 余数为正数,上商为1,余数为x (x的值变了)

    • 余数为负数,上商为0 同时恢复被除数 x(上商为1代表这步减法是合规的,上商为0代表这里不能做减法,因此要恢复)

    • 注意: [ x ∗ ] 原 = [ x ∗ ] 补 = [ x ∗ ] 反 [x^]_原=[x^]_补=[x^*]_反 [x∗]原=[x∗]补=[x∗]反。

  2. x 逻辑左移1位成为新的被除数。从第1步开始循环

特点:

  1. x 代表的值一直在变化(做减法、做移位),而 y 代表的值是不发生变化的

  2. x 从第二步开始就代表了余数(左移1位后成为新一轮除法运算的被除数),因为x可能会被恢复,因此这种方法名为 恢复余数法

  3. 每一轮循环都会移位一次。n位的被除数,共移位n次

特点:

  1. 上商 n+1 次

  2. 第一次上商判溢出

  3. 移位 n 次,加法 n+1 次

  4. 用移位的次数判断除法是否结束

关于第一次上商判溢出

在纯小数定点机中,假如第一次上商为1,代表结果>1,产生了溢出。

恢复余数法运算规则:

2. 不恢复余数法(加减交替法)

不恢复余数法运算规则(注意对比恢复余数法运算规则。实际上这个运算规则就是从恢复余数法运算规则中推导出来的)

特点:

  1. 上商 n+1 次

  2. 第一次上商判溢出

  3. 移n次,加 n+1 次

  4. 用移位的次数判断除法是否结束

12. 浮点四则运算

设 $x=S_x·2^{j_x} \quad y=S_y·2^{j_y}$

这里符号位使用两位,符号最高位是真正的符号位,在移位运算时,只有符号最高位不参与移位(算术移位)

为什么要对阶以及什么是对阶?

浮点数运算有两个前提要求:

  1. 基值相同

  2. 阶码相同

只有满足这两个要求,才能保证尾数进行加减法运算结果的正确性。而在基值相同的情况下,调整阶码使阶码相同就是对阶。对阶时尾数也要调整(保证真值不变)

计算机中,通过对阶码进行补码减法运算,判断阶差,并对阶码进行调整。下图给出了阶差公式及所有的调整方案:

这里的 加减法、移位操作,操作数可以从 1 改为 Δ j

计算机采用的对阶原则是:小阶向大阶看起。原因:高位丢失影响大小,低位丢失影响精度。

3. 规格化

通用定义:1r≤∣S∣<1r代表基值当 r=2 时:12≤∣S∣<1通用定义:\frac{1}{r}\leq|S|<1 \qquad r代表基值 \\ 当\,r=2\,时:\frac{1}{2}\leq|S|<1 \qquad通用定义:r1​≤∣S∣<1r代表基值当r=2时:21​≤∣S∣<1

特例如下:

左规,机器数采用补码:尾数左移一位(算数移位),阶码减 1,直到数符和第一数位不同为止。

右规,使用条件:当 尾数溢出( >1)时,需 右规。即尾数出现 01. ×× …×或 10. ×× …×时

机器数采用补码:尾数右移一位(算术移位),阶码加 1

4. 舍入

在 对阶 和 右规 过程中,可能出现 尾数末位丢失 引起误差,需考虑舍入。两种舍入方案:

  1. 0舍1入法:

    • 末位丢失0:不做处理

    • 末位丢失1:末位+1

  2. 恒置1法:无论末位丢失0或1,始终把末位设为1

5. 溢出判断

首先要明确:这里的溢出是指整个浮点数的大小超出了定点机的存储字长

最值的计算方法参考 [浮点数的范围计算](#2. 浮点数的表示范围)

整数的原码表示法
小数原码表示法
原码运算问题
原码表示法例题
计数器阐释补数的概念
公式原理
例子
例子
例子
反码整数例子
小数反码举例
反码例子
例题
补码缺陷
移码例子
移码比较大小
移码和补码的比较1
真值、补码、移码对照表
示例
小数定点机和整数定点机
r=2
浮点数在计算机中的表示形式
浮点数表示范围
浮点数表示范围练习题
浮点数的规格化
规格化范围计算例题
机器零
IEEE754标准
移位添补规则
正数移位运算实例1
负数移位运算实例1
算术移位的硬件实现
算数移位和逻辑移位的区别
补码加减法例1
补码加减法例2
溢出例子
两位符号位判溢出原理
笔算乘法分析
笔算乘法改进
改进后的笔算乘法分析
原码1位乘运算规则
原码1位乘例题
分析笔算除法
笔算除法和机器除法的比较
原码除法原理
恢复余数法运算规则
不恢复余数法运算规则
求阶差
对阶例子
规格化数的判断
特例
对阶例题
浮点四则运算-溢出判断