算术运算
算术运算
加法运算
二进制加法
二进制加法遵循以下规则:
- 0 + 0 = 0
- 0 + 1 = 1
- 1 + 0 = 1
- 1 + 1 = 10(进位 1)
半加器和全加器
- 半加器:处理两个一位二进制数的加法
- 全加器:处理两个一位二进制数加上来自低位的进位
多位加法器
- 串行进位加法器:逐位计算,速度较慢
- 并行进位加法器:同时计算所有位,速度快但电路复杂
- 超前进位加法器:预先计算进位,平衡速度和复杂度
减法运算
补码表示
计算机中通常使用补码表示负数:
- 原码:最高位表示符号,其余位表示数值
- 反码:正数不变,负数各位取反
- 补码:正数不变,负数反码加 1
补码加法
减法可以通过补码加法实现:
A - B = A + (-B)
其中(-B)是 B 的补码。
溢出检测
- 符号位溢出:两个正数相加得到负数,或两个负数相加得到正数
- 进位溢出:最高位有进位但符号位无变化
乘法运算
移位加法乘法
基本乘法算法:
- 将被乘数左移
- 根据乘数的每一位决定是否加上被乘数
- 累加得到结果
Booth 算法
改进的乘法算法:
- 减少部分积的数量
- 通过移位和加减操作实现
- 适用于有符号数乘法
硬件乘法器
- 阵列乘法器:并行计算所有部分积
- 树形乘法器:使用树形结构减少延迟
- 流水线乘法器:将乘法分解为多个阶段
除法运算
恢复余数除法
基本除法算法:
- 将被除数左移
- 尝试减去除数
- 如果结果为正,商为 1;否则恢复并商为 0
- 重复直到所有位处理完毕
不恢复余数除法
改进的除法算法:
- 不恢复被减去的数
- 通过调整后续操作补偿
- 减少恢复操作,提高效率
硬件除法器
- 阵列除法器:并行处理多位
- 迭代除法器:通过多次迭代提高精度
- 查表除法器:使用查找表加速计算
浮点运算
浮点数表示
IEEE 754 标准:
- 单精度:32 位(1 位符号,8 位指数,23 位尾数)
- 双精度:64 位(1 位符号,11 位指数,52 位尾数)
浮点加法
- 对阶:使两个数的指数相同
- 尾数相加:对齐后的尾数相加
- 规格化:调整结果到标准格式
- 舍入:根据舍入模式处理精度
浮点乘法
- 指数相加:两个指数的和
- 尾数相乘:两个尾数的乘积
- 规格化:调整结果到标准格式
- 舍入:根据舍入模式处理精度
运算优化
并行运算
- SIMD 指令:单指令多数据
- 向量运算:同时处理多个数据
- 并行算法:多个运算单元协同工作
流水线技术
- 运算流水线:将运算分解为多个阶段
- 指令流水线:重叠执行多条指令
- 超标量技术:同时发射多条指令
缓存优化
- 数据局部性:利用时间和空间局部性
- 预取技术:提前加载可能需要的数据
- 写缓冲:减少写操作的延迟
性能指标
运算速度
- MIPS:每秒百万条指令
- FLOPS:每秒浮点运算次数
- 延迟:单个运算的完成时间
精度控制
- 舍入模式:向零、向无穷、向最近等
- 精度损失:运算过程中的精度变化
- 误差分析:累积误差的估计
实际应用
科学计算
- 大规模矩阵运算
- 数值积分和微分
- 信号处理和图像处理
金融计算
- 高精度数值计算
- 风险评估和建模
- 实时交易系统
图形处理
- 3D 图形渲染
- 物理模拟
- 游戏引擎计算