add 有符号数
好的,我们来详细解释一下有符号数的加法(ADD),特别是计算机中最常用的补码表示法。核心在于:使用补码表示,有符号数的加法和无符号数的加法可以使用完全相同的硬件电路来完成。
? 核心概念:补码
- 表示范围: 对于一个
n位的二进制数,有符号数(补码)能表示的范围是-2^(n-1)到2^(n-1) - 1。- 例如,8位:
-128到127 - 例如,16位:
-32768到32767
- 例如,8位:
- 最高位为符号位: 最高位(最左边的位)称为符号位。
0表示非负数(正数或零)1表示负数
- 正数和零的补码: 与其二进制原码相同。
+5(8位):0000 01010(8位):0000 0000
- 负数的补码: 是其对应正数原码的“取反加一”。
- 求
-5:+5原码:0000 0101- 取反:
1111 1010 - 加一:
1111 1011
- 所以
-5(8位):1111 1011
- 求
? 有符号数的加法规则(补码加法)
- 像无符号数一样相加: 把两个补码表示的二进制数直接输入到加法器(专门进行二进制加法的硬件电路)中。
- 逐位相加: 进行普通的二进制加法,包括进位。
- 结果解释: 把相加结果的二进制位串也解释为补码,得到的有符号十进制数就是正确的运算结果(在
不溢出的情况下)。 - 溢出(Overflow)判断 - 关键!: 加法的结果超过了补码所能表示的范围(上溢或下溢)。
- 检测溢出规则 (常见方法):
符号位参与运算产生的进位(最终进位)与最高数值位(符号位下一位)向符号位的进位不同时,发生溢出。- 更直观地说:两个正数相加得到负数,或两个负数相加得到正数时,必定发生溢出。
- 结果无效: 发生溢出时,计算结果在补码意义下是无效的,计算结果不准确。
- 硬件信号: 加法器通常会产生一个
溢出标志(Overflow Flag, OF)。
- 检测溢出规则 (常见方法):
? 实例演示 (以8位补码为例)
-
例1: 5 + 3 = 8 (
不溢出)5: 0000 0101 3: + 0000 0011 --------------- 0000 1000 (结果二进制)- 解释为补码:
0000 1000=+8✅ 结果正确。 - 符号位都是
0,结果也是0;符号位和数值位进位都无问题,无溢出。
- 解释为补码:
-
例2: (-5) + (-3) = -8 (
不溢出)-5: 1111 1011 -3: + 1111 1101 --------------- 1 1111 1000 (结果二进制 - 有1位进位溢出,在8位下被丢弃)- 丢弃进位: 在固定位宽的加法中,超出最高位的进位被舍弃。
- 实际保留结果:
1111 1000 - 解释为补码:
1111 1000(最高位1是负数) -> 求补码:取反0000 0111, 加10000 1000=8-> 所以是-8✅ 结果正确。 - 符号位都是
1,结果也是1;虽然产生了最终进位(被舍弃),但两个负数加没有变正,无溢出。
-
例3: 127 + 1 = 128 (
上溢出!)127: 0111 1111 1: + 0000 0001 --------------- 1000 0000 (结果二进制)- 解释为补码:
1000 0000=-128❌ 结果错误!两个正数相加应该是128,但128超出了8位补码的正数最大值127。 - 溢出判断:
- 两个正数(符号位都是
0)相加,得到了负数(符号位1) ➔ 上溢发生! ✅ (符合规则) - 符号位进位:
0+0=0,无进位。 - 数值位进位:
1111111 + 0000001,最低位不断进位,最后1111111 + 1导致最高数值位(第7位)向符号位(第8位)产生进位1。 - 符号位参与运算:
0 + 0 + 进位1 = 1,无进位产生(结果是1,但向更高位无进位)。 - 关键: 符号位的输入没有进位进来(来自低位的进位是
1),但输出没有产生进位到更高位(结果是1),并且符号位状态改变(从0变成了1)。检测规则能发现这种不一致。
- 两个正数(符号位都是
- 解释为补码:
-
例4: (-128) + (-1) = -129 (
下溢出!)-128: 1000 0000 -1: + 1111 1111 --------------- 1 0111 1111 (结果二进制 - 有1位进位溢出,在8位下被丢弃)- 丢弃进位:
1 - 实际保留结果:
0111 1111 - 解释为补码:
0111 1111=+127❌ 结果错误!两个负数相加应该是-129,但-129超出了8位补码的负数最小值-128。 - 溢出判断:
- 两个负数(符号位都是
1)相加,得到了正数(符号位0) ➔ 下溢发生! ✅ (符合规则)
- 两个负数(符号位都是
- 丢弃进位:
-
例5: 63 + (-64) = -1 (
不溢出)63: 0011 1111 -64: + 1100 0000 (-64的补码:0100 0000 -> 取反1011 1111 -> 加一1100 0000) --------------- 1111 1111 (结果二进制)- 解释为补码:
1111 1111=-1✅ 结果正确。 - 一个正数一个负数相加,结果符号与绝对值较大的数一致(
-64),无溢出。
- 解释为补码:
✅ 总结
- 核心操作: CPU对有符号数(补码)和无符号数使用相同的加法器电路进行二进制加法。
- 结果解释: 加法器输出的二进制结果,需要按补码规则解释才能得到正确的有符号数。
- 溢出是关键: 如果结果超出了当前位宽下补码的表示范围,就会发生溢出?。溢出的结果是无效的。
- 溢出判断: 必须通过特定的逻辑(如检查符号位的变化)来判断是否溢出,单独的进位标志(Carry Flag)不足以判断有符号加法溢出。
- 优点: 补码表示法极大地简化了计算机硬件的设计,使加法和减法(减法可转换为补码加法)可以用同一个电路完成。
理解补码加法及其溢出检测机制是理解计算机如何处理有符号整数运算的基础?️。如果你有具体的例子或不明白的地方,可以再提出来讨论!
2.汇编求无符号数的平均数
求无符号数的平均数文章目录题目重述问题分析以及求解思路程序代码题目重述试求内部RAM30H~37H单元中8个无符号数的算术平均值,结果存入38H。问题分析以及求解思路待完善(请耐心等待)程序代码
资料下载
刘洋
2021-11-23 16:20:28
51汇编和c语言实现 两字节有符号数相乘
问题:(1)从外部扩展RAM中读取被乘数和乘数,乘数存放于0100H处开始,总共3个乘数,每个乘数是3字节的有符号数。被乘数存放于0200H处开始,总共3个被乘数,每个被乘数是3字节的
资料下载
佚名
2021-11-23 10:21:09
MATLAB教程之MATLAB符号运算的详细资料说明
Matlab 符号运算是通过符号数学工具箱(Symbolic Math Toolbox)来实现的。Matlab 符号数学工具箱是建立在功能强大的
资料下载
佚名
2019-07-24 16:03:26
FPGA中的有符号数乘法说明
FPGA中乘法器是很稀缺的资源,但也是我们做算法必不可少的资源。7系列及之前的FPGA都是25x18的DSP,UltraScale中是27x18,我们可以通过调IP Core的方式或者原语的方式来进行乘法操作。在里面可以设置有符号
2022-02-16 16:21:36
详细分析Verilog编写程序测试无符号数和有符号数的乘法
有符号数的计算在 Verilog 中是一个很重要的问题(也很容易会被忽视),在使用 Verilog 语言编写 FIR 滤波器时,需要涉及到有
2021-05-02 10:48:00
关于verilog中的无符号数和有符号数
在数字电路中,出于应用的需要,我们可以使用无符号数,即包括0及整数的集合;也可以使用有符号数,即包括0和正负数的集合。在更加复杂的系统中,也许这
2020-11-18 17:46:10
FPGA有符号数乘法操作指南
FPGA中乘法器是很稀缺的资源,但也是我们做算法必不可少的资源。7系列及之前的FPGA都是25x18的DSP,UltraScale中是27x18,我们可以通过调IP Core的方式或者原语的方式来进行乘法操作。在里面可以设置有符号
2020-03-08 17:14:00
AD采样后数据如何在FPGA中转化为有符号数
输入系统的有正有负的模拟信号在AD采样前,会加上了直流偏置变成全正信号才输入AD的,所以在AD采样后送给FPGA的信号是无符号数。
2019-08-11 11:43:39
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机