Processing math: 33%

𝓝𝓮𝓶𝓸&博客

【计算机组成】运算器与运算方法

定点数运算及溢出

  • 定点数加减法:减法化加法,用补码直接相加,忽略进位
  • 溢出:运算结果超出了某种数据类型的表示范围
  • 溢出检测方法:统一思想概括为正正得负或负负得正则溢出,正负或负正不可能溢出
    • 方法1:V = XYS + XYS(XY为两个加数的符号位,S为结果的符号位,_表示非),那么V = 1则为溢出
    • 方法2:V = C0 ⊕ C1(C0是最高数据位产生的进位,C1是符号位产生的进位),那么V = 1则为溢出
    • 方法3:V = Xf1 ⊕ Xf2(数据采用变型补码 Xf1Xf2 X0X1X2X3... )

注意:以上方法都是利用正正得负负负得正则溢出为出发点的电路设计

补码一位乘法——Booth算法

[x·y]=[x]·(y0yi2i)=[x]·[y0+y121+y222++yn2n]=[x]·[y0+(y1y121)+(y221y222)++(yn2(n1)yn2n)]=[x]·[(y1y0)+(y2y1)21++(ynyn1)2(n1)+(0yn)2n]

总结起来设计数字电路的规则就是:

  • 为 00 或者为 11 的时候,直接右移一位
  • 为 01 的时候,加 x 的补,然后右移一位
  • 为 10 的时候,加 -x 的补,然后右移一位

其实第一行和最后一行都能设计数字电路,为什么要从第一个式子推到最后一个式子呢?原因有两点:

  • 二进制中如果有 0,可以不进行运算
  • 如果有连续的 1 可以减少计算次数,比如 a \* 001111100 = a \* (010000000 - 0000000100)

所以每次判断 y_{n+1} - y_{n} 就可以减少计算次数了

参考:https://www.cnblogs.com/xisheng/p/9260861.html

定点数除法

略,没找到好的资料

浮点数加减法

  1. 求阶差,阶码小的对齐大的
  2. 尾数加减
  3. 结果规格化
posted @   Nemo&  阅读(744)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 上周热点回顾(1.20-1.26)
· 【译】.NET 升级助手现在支持升级到集中式包管理
点击右上角即可分享
微信分享提示