并行乘法器:原码阵列乘法器vs补码阵列乘法器的理解

目录

[1、原码乘法(例 20):符号与数值分离](#1、原码乘法(例 20):符号与数值分离)

[2、补码乘法(例 21):符号与数值一体](#2、补码乘法(例 21):符号与数值一体)

3、小结①

[1. 原码乘法(例 20:x=+15,y=-13)](#1. 原码乘法(例 20:x=+15,y=-13))

[2. 补码乘法(例 21:x=-15,y=-13)](#2. 补码乘法(例 21:x=-15,y=-13))

[3. 小结②](#3. 小结②)

1、终极简化理解

[2、用 "编码本质" 解释](#2、用 “编码本质” 解释)

如何理解符号位是否参与运算?

[1、原码乘法:符号与数值 "完全分离"(先拆后算)](#1、原码乘法:符号与数值 “完全分离”(先拆后算))

[2、补码乘法:符号与数值 "部分融合"(先算后拆)](#2、补码乘法:符号与数值 “部分融合”(先算后拆))

[3、本质:都是 "符号单独处理 + 数值绝对值运算"](#3、本质:都是 “符号单独处理 + 数值绝对值运算”)

4、小结③

大总结

[一、都基于 "符号分离 + 绝对值运算"](#一、都基于 “符号分离 + 绝对值运算”)

[二、原码阵列乘法(例 20)](#二、原码阵列乘法(例 20))

[三、补码阵列乘法(例 21)](#三、补码阵列乘法(例 21))

四、对比

五、一句话通透本质


1、原码乘法(例 20):符号与数值分离

  1. 符号处理:单独异或(0⊕1=1),结果符号位直接定正负;
  2. 数值运算:用绝对值的原码(无符号数)做阵列乘法,不管正负;
  3. 结果修正:若符号位为负,对数值部分 "算后求补"(转补码),最终拼接符号 + 补码数值。

2、补码乘法(例 21):符号与数值一体

  1. 符号处理:符号位参与运算(1⊕1=0),结果符号位由异或直接定,无需额外修正;
  2. 数值运算:用补码的 "绝对值"(算前求补器转无符号)做阵列乘法,但补码规则下,符号位已包含在数值运算中(比如负数补码的符号位 1 参与部分积相加);
  3. 结果修正:若符号位为正,数值部分直接用;若为负,需 "算后求补",但补码乘法的 "求补" 逻辑更贴合补码编码规则(原码求补是转补码,补码求补是转原码)。

3、小结①

  • 原码:符号单独算,数值按无符号算,结果按需转补码(适配原码编码);
  • 补码:符号参与算,数值按补码规则算,结果天然适配补码(符号位一体,更高效)。

原码乘法用的是 "数的绝对值(无符号数)",补码乘法用的是 "补码对应的绝对值(无符号数)"------ 两者最终都是把 "有符号数转成无符号的绝对值" 做阵列乘法,但 "转绝对值的规则" 和 "结果还原规则" 完全不同

维度 原码阵列乘法(例 20) 补码阵列乘法(例 21)
输入数形式 原码(符号位 + 数值位) 补码(符号位 + 数值位)
转绝对值的规则 直接取数值位(原码的数值位 = 绝对值) 对补码 "求补"(补码求补 = 原码,取数值位 = 绝对值)
阵列乘法运算对象 原码的数值位(天然是绝对值,无符号) 补码求补后的数值位(转成绝对值,无符号)
符号处理核心 符号位单独异或,数值和符号完全分离 符号位异或定结果符号,但补码规则下符号已融入数值运算逻辑
结果还原规则 符号为负 → 对数值位 "求补转补码" 符号为负 → 对数值位 "求补转补码"(但补码求补的逻辑更贴合编码)

1. 原码乘法(例 20:x=+15,y=-13)

  • x 原码:01111 → 数值位 = 1111(直接是绝对值,不用转);
  • y 原码:11101 → 数值位 = 1101(直接是绝对值,不用转);
  • 阵列乘法算 1111×1101=11000011(无符号);
  • 符号位 0⊕1=1(负)→ 原码结果直接拼接符号位 1 + 数值位 11000011=111000011(原码),若要转补码才需求补。

2. 补码乘法(例 21:x=-15,y=-13)

  • x 补码:10001 → 求补后 = 1111(补码转原码,数值位 = 绝对值);
  • y 补码:10011 → 求补后 = 1101(补码转原码,数值位 = 绝对值);
  • 阵列乘法算 1111×1101=11000011(无符号);
  • 符号位 1⊕1=0(正)→ 直接拼接符号位 0 + 数值位 11000011=011000011(补码,正数补码 = 原码)。

3. 小结②

原码乘法的 "绝对值" 是原码数值位直接拿 ,补码乘法的 "绝对值" 是补码先求补再拿数值位 ;且原码的符号是 "外挂式" 单独算,补码的符号是 "内嵌式"(求补过程已包含符号逻辑),这是两者最本质的不同。

1、终极简化理解

不管原码还是补码乘法,阵列乘法器的 "数值运算部分" 只认 "无符号的绝对值",但:

  • 原码的数值位天生就是绝对值(原码设计就是 "符号位 + 绝对值"),直接用;
  • 补码的数值位不是绝对值(补码是 "符号位 + 模运算编码"),必须先 "求补转原码",才能拿到绝对值,再用。

2、用 "编码本质" 解释

  1. 原码的本质 :原码 = 符号位(0 正 1 负) + 绝对值的二进制(数值位)。所以对原码来说,"取数值位" 直接就是绝对值,无需额外操作.

  2. 补码的本质 :补码 = 符号位(0 正 1 负) + 模运算后的编码 (不是直接的绝对值)。负数补码的数值位是 "绝对值的补数"(正数补码 = 原码),所以必须**"求补" 转原码** ,才能拿到绝对值。

如何理解符号位是否参与运算?

补码乘法看似 "符号位参与运算",但本质上依然是 "符号与数值分离处理" ,只是 "分离的时机和方式" 和原码不同,核心区别在 "符号位的处理阶段":

1、原码乘法:符号与数值 "完全分离"(先拆后算)

  • 分离阶段:最开始就拆成 "符号位" 和 "绝对值数值位";
  • 运算阶段:符号位单独异或,数值位(绝对值)完全按无符号数算;
  • 合并阶段:最后再把符号位和数值位结果拼接,若符号为负,数值位还要转补码(例 20 中,符号位 1,数值位 11000011 转补码后才是最终结果)。

2、补码乘法:符号与数值 "部分融合"(先算后拆)

  • 分离阶段 :最开始不拆符号位,而是把补码整体 "求补" 转原码 (此时补码的符号位参与求补,间接转成原码的符号和数值);
  • 运算阶段 :求补后的数值位(绝对值)按无符号数算,但补码的符号位异或结果直接决定最终符号(例 21 中,符号位 1⊕1=0,直接定结果为正);
  • 合并阶段:符号位直接拼接数值位结果,若符号为正,数值位无需额外转换(因为补码正数的数值位 = 原码绝对值;负数才需转补码,但符号位已通过异或定好)。

3、本质:都是 "符号单独处理 + 数值绝对值运算"

不管原码还是补码乘法,阵列乘法器的数值运算部分只处理 "无符号绝对值",符号位的核心逻辑都是:

  1. 用异或定最终符号(正正得正、正负得负等);
  2. 数值部分只算绝对值相乘;
  3. 差异仅在 "符号位何时参与处理"(原码早拆,补码晚拆)。

4、小结③

补码乘法看似 "符号位参与运算",实际是**"先通过求补器把补码转原码(符号 + 绝对值),再用原码的逻辑算符号和数值"**,本质和原码乘法一样是 "符号与数值分离处理",只是多了 "补码转原码" 的步骤,让符号处理看起来更 "融合"。

大总结

一、都基于 "符号分离 + 绝对值运算"

不管原码还是补码乘法,阵列乘法器硬件只负责 "无符号绝对值相乘" ,符号位单独用异或定正负,本质是 "符号与数值分离处理",差异在编码适配的 "预处理" 和 "后处理"。

二、原码阵列乘法(例 20)

  1. 编码适配:原码 = 符号位(0/1) + 绝对值数值位(天生无符号)
  2. 运算流程 :拆符号 → 符号异或定结果符号 → 绝对值数值位直接进阵列乘法器 → 结果拼接符号位,若符号为负,数值位转补码(因原码负数需补码存储)
  3. 典型场景:无符号数乘法(符号位隐含为 0)、原码有符号数乘法(需额外符号修正)

三、补码阵列乘法(例 21)

  1. 编码适配:补码 = 符号位(0/1) + 模运算编码(非直接绝对值,负数需 "求补" 转原码)
  2. 运算流程 :补码整体求补转原码(符号位参与,间接拆出绝对值) → 符号异或定结果符号 → 绝对值数值位进阵列乘法器 → 结果拼接符号位,正数无需额外转换(补码正数 = 原码),负数按需转补码
  3. 典型场景:补码有符号数乘法(符号位已融入编码,修正更高效)

四、对比

对比项 原码阵列乘法 补码阵列乘法
数值运算对象 原码数值位(天生绝对值,直接用) 补码→求补转原码后的数值位(间接拆绝对值)
符号处理时机 最开始拆分符号位 补码转原码时 "隐含拆分" 符号位
结果修正复杂度 负数需额外转补码 正数无需修正,负数修正更贴合编码
硬件适配性 适配原码系统,逻辑简单 适配补码系统(CPU 常用),效率更高

五、一句话通透本质

原码乘法是 "符号明拆 + 绝对值直算 + 结果硬修正",

补码乘法是 "符号暗拆(借求补转原码) + 绝对值直算 + 结果软适配"

------ 两者都围绕 "绝对值相乘" 核心,差异源于编码规则(原码显式存符号,补码隐式存符号),补码更贴合硬件高效运算需求。

相关推荐
阿昭L3 天前
计算机的性能
计算机组成原理
阿昭L5 天前
RISC-V指令简介
risc-v·计算机组成原理
Liangwei Lin14 天前
计算机组成原理
计算机组成原理
Joey_Chen17 天前
补码是什么?为什么byte的范围是-128~127,负数要比整数多1个?
计算机组成原理
自我陶醉@1 个月前
计算机组成原理---中央处理器
考研·学习方法·408·计算机组成原理·中央处理器·指令流水线
♛识尔如昼♛1 个月前
计算机组成原理(15) 第二章 - Cache
cache·计算机组成原理·多级cache
RAN_PAND1 个月前
计算机组成原理实验
网络·计算机组成原理
岑梓铭1 个月前
考研408《计算机组成原理》复习笔记,第五章(5)——CPU的【指令流水线(含中断)】
笔记·考研·408·计算机组成原理·计组
JuneXcy2 个月前
计算机组成原理实验
计算机组成原理