处理器是怎么计算加法的

补码原理-处理器是如何将整数减法运算转换成整数加法运算的 无论你是使用的最低端的51单片机还是最高端i9处理器,在这个处理器中只有加法运算电路没有减法运算电路,若你过有一些计算机基础,大概应该知道这是通过补码实现的。但处理器是如何将通过补码加法实现减法的呢? 阅读详情

只要你认真读这篇文章,我觉得你也能制作出一个用于计算加法的处理器。

今天,计算机已经完全融入了我们生活。前几篇文章介绍了计算机整体的工作原理,这篇文章来单独介绍一下处理器是怎么计算加法的。

首先,想要了解计算机,就必须了解二进制。

我们常用的是十进制。用十个数字来表示。

当然,还有各种例如六十进制啊、十六进制啊等等,但人们最常用的还是十进制。

直到有一天,人们开始开发计算机。开发者们发现,使用二进制来开发计算机要比使用十进制方便的多。这是因为二进制刚好对应电路的开和关。

你可不要小看二进制。五个手指,使用十进制可以数到五,使用二进制就可以数到三十一。

注:在这篇文章中,我们在二进制数字的前面添加B来防止混淆。

如果你不相信,可以用手指头去数。

我们回到主题。怎么用二进制做加法呢?

你可能会说:“让计算机数手指头”

……

我们用一个表格来表示。

这是一个最小的二进制计算单位,它只能计算B1+B1以内的加法。

(无非就是B0+B0、B0+B1和B1+B1)

你应该还记得,加法中,和就等于加数加加数。

输入进位可以用一个加法竖式来解释。

注意箭头指向的1,它就是十位上的输入进位。是个位上加出的。

其实个位也有输入进位,是0。因为没有人给它进位,它是最低位。

我们回到上面那一张表格。

我们给他几个数。

注意,结果是个位上的。进位才是十位上的。

我们将输入进位为1。

注意,进位到这一位只代表一,而不是十。

现在,我们只能计算1+1,我们来改进一下。

我们将这个二进制计算单位叫做One Bit Adder(一位加法器)。

这根本不够计算一般的加法。谁会制作一个计算机来用于计算1+1呢?

我们多搞几个。

把它们连起来并给一个放置加数以及结果的地方。

先是第一个。

C-Out连接C-In。

由于它是最低位所以没有输入进位。

他的num1连接加数1的最低位,num2连接加数2的最低位,将个位上的结果(sum)显示到结果上,最终进位(C-Out)显示到最终进位上。

屏住呼吸。3---2---1---睁眼!

千万别晕!我们一起来分析。

我们发现红色线段连接着最低位的C-Out。差不多是这个样子的。

我们继续用竖式。

个位上的One-Bit-Adder就将进位1塞给了十位上的One-Bit-Adder。

十位上的One-Bit-Adder没有将进的1看成10,而是看成了1。

现在我们将理论上的变成实际上的,就是把它做出来用。

我们使用三个基本的部件就可以表示各种逻辑。

这三个部件分别是与、或、非。

什么是与?

很明显,与的意思就是都,英文中是and。只有两个条件都满足时才通电。例如1+1 = 2与 2+2 = 4,它就会通电。

什么是或?

或的意思同样很明显。两个条件只要满足一个就通电。1+1=2或2+2=3,它同样会通电。

什么是非?

非的意思就更明显了。它只有一个条件并输出与之相反的情况。例如,非1+1,它会通电。

我们可以用这几个部件做出更加复杂的部件。

与非、或非、异或、同或。

与非是什么?

与非的英文是not and,就是与反义词。例如,1+1=2与1+1=2,这句话会通电,但是1+1=2与非1+1=2就不会通电了。

或非门的英文是not or,或的反义词。

异或这个名字听起来很复杂,但是很简单。当两个输入不相等的时候才会通电。

最后一个是同或,就是一个异或加上一个非,也就是相等的时候通电。

我们可以制作出一个One-Bit-Adder。

我们来分析一下。

假设A为0、B为1、C-In为0。

标黑的线路是通电的线路。

我们从A经过的路线分析。

A首先来到下图箭头处并开始判断。

与的意思是两边相等,A的值1和B的值0不相等,因此不通电。

线路继续。

A又来到下图箭头位。

异或在两边不相等的时候才通电,1和0不相等,因此继续通电。

A和Cin的值不相等,因此通过,Sum的值为1。因此结果为1。

为什么这样连接线路呢?

我们先抛弃一些线路,单独计算个位上的和。

我们先让A为1。

A通过第一个异或门时,如果A为1,B为1就无法通过这扇门。B1+B1=B10,个位上是0。非常正确。

A通过第二扇异或门。C-In其实相当于另一个加数,和上一次检查差不多。

我们再将图片补全。

前面求Sum的步骤不再讲解,我们讲求C-Out的步骤。

继续假设A为1,但C-In也为1。

还是从A的视角讲。

A通过一个异或门,得出Sum为0。向下图箭头位置通电。

发现A和B不相等,因此不通电。

C-In通过了一扇异或门,来到下面的与门。

它发现A的值1和C-In的值相等,于是通电。

来到或门,继续通电,得出C-Out等于1。

将Sum和C-Out连接起来,得到B10。

验算一遍。

太棒了!我们得出了正确的结果。

接下来,我们就可以制作多个加法器并将它们连接起来,我们就有了一个计算加法的计算器!

问题来了:怎么用它计算减法、乘法、除法、指令呢?

希望你看完这篇文章会明白处理器的工作原理!

【HDL系列】超前进位加法器原理与设计 目录 一、行波进位加法器关键路径分析 二、超前进位加法器 三、超前进位加法器关键路径分析 四、Verilog描述 上期介绍了半加器、全加器以及行波进位加法器(RCA),本文介绍超前进位加法器(Lookahead Carry Adder,简称LCA)。在介绍超前进位加法器前,我们先来分析下行波进位加法器的关键路径。 一、行波进位加法器关键路径分析 N比特行波进位加法器可由N个全加器级联... 阅读详情

相关推荐

Python地理空间数据库之geopandas使用详解

地理空间数据分析在许多领域中都有着广泛的应用,包括地理信息系统(GIS)、城市规划、环境科学、地质勘探等。Python GeoPandas是一个强大的库,旨在简化地理空间数据的处理和分析。本文将深入介绍GeoPandas库,包括其基本概念、功能特性、示例代码以及在实际应用中的应用场景。

Rocky006的博客 1万+

3、cpu的加法计算过程

一、加法运算 1、进位、本位和数 本位和数:sum,简写为s 进位:carry,简写为c 定义参考下图: 2、半加法器 半加法器 只能计算1位二进制的加法;全加法器 可以计算多位二进制的加法。 用一个 异或门 和一个 与门 即可实现一个 半加法器。 输入:两个加数 输出:本位和数、进位 3、全加法器 半加法器 只能计算1位二进制的加法;全加法器 可以计算多位二进制的加法。 输入:两个加数,进位 输出:本位和数,进位 4位二进制数加法器 将4个全加法器的cout接到下一级的cin,如下图: 上述的这种

engineer0的博客 4281

ZXDoc工业级CAN总线仿真工具全解析与应用实践

CAN总线作为现代工业通信的核心协议,其仿真技术是汽车电子和工业控制领域的关键支撑。通过物理层信号模拟、协议层报文解析和应用层人机交互的三维仿真,开发者能够构建完整的硬件在环测试环境。ZXDoc作为工业级仿真工具,集成了DBC工程化管理、HMI面板设计和自动化测试脚本等核心功能,特别适用于ECU开发、产线验证等场景。工具支持ISO11898标准协议,提供错误帧注入、负载压力测试等高级特性,结合Python API可实现复杂测试用例的自动化执行。在新能源车VCU测试等实践中,通过优化采样点等参数配置,显著提升

weixin_30096975的博客 471

cpu加法计算过程

我们知道,计算机只认识0和1,当我们进行加法运算时,计算机的CPU是如何处理的呢?以2+3为例,过程如下: 1、存储数字 X: 0010 Y: 0011 2、进行异或运算,结果存放入R 0010 xor 0011 -------------- 0001 R:0001 3、进行与运算,验证是否完成运算 0010 and 0011 -------------- 0010 ...

weixin_38420154的博客 1515

Windows11安装Ubuntu 20.04.3 LTS双系统(详细过程)

一、基础环境 听说BIOS模式的传统MBR模式和新式UEFI模式,会对安装双系统产生影响。Windows11应该都是UEFI吧,可以按win+r输入msinfo32回车确认查看BIOS模式,我的电脑是UEFI+双硬盘 Ubuntu安装准备 1、 官网下载Ubuntu 20.04.3 LTS镜像iso文件:https://ubuntu.com/download/desktop 2、 下载官网推荐的U盘启动制作工具rufus: https://rufus.ie/ 3、制作启动u盘 插入U盘, 运行 rufu

学习随笔 9万+

【GAN实战】基于pytorch-CycleGAN与pix2pix的自定义数据集训练全攻略

本文详细解析了基于PyTorch的CycleGAN与pix2pix模型在自定义数据集上的完整训练流程。核心在于根据数据是否成对来正确选择模型:pix2pix适用于严格配对的“孪生”数据,而CycleGAN则擅长处理非配对的“散装”数据集。文章从数据准备、配置训练到测试应用,提供了全链路实战指南与关键参数调优心得,帮助开发者高效实现图像到图像的风格转换。

x2y3z4a5b的博客 704

处理器的计算能力如何计算

我们常用双精度浮点运算能力衡量一个处理器的科学计算的能力,就是处理64bit小数点浮动数据的能力 支持AVX2的处理器的单指令的长度是256bit,每个intel核心假设包含2个FMA,一个FMA一个时钟周期可以进行2次乘或者加的运算,那么这个处理器在1个核心1个时钟周期可以执行256bit*2FMA*2M/A/64=16次浮点运算,也称为16FLOPs,就是Floating...

weixin_30593261的博客 1万+

《拉依达的嵌入式\驱动面试宝典》—计算机硬件篇(一)

《拉依达的嵌入式\驱动面试宝典》 整合了所有我认为可能遇到的技术面试问题。所有问题及其答案均是我个人学习后查阅资料总结,每个回答都做了仔细的分析,在嵌入式及其驱动面试相关问题解析做到全网独一无二。学习或者转行到嵌入式、驱动开发领域学习的不二之选

拉依达不拉跨的博客 768

一个故事讲完CPU的工作原理

作者:柳两丛来源:https://www.zhihu.com/question/40571490/answer/718942643已获转载授权上二年级的小明正坐在教室里。现在是数学课...

码农翻身 1741

分享一个我自用的 Python 消息发送模块,支持邮件、钉钉、企业微信

🔥 分享一个我自用的 Python 消息发送模块,支持邮件、钉钉、企业微信

XiaoqiangClub的博客 478

[企业AI落地] RAG 知识库系统在多租户环境下的细粒度权限隔离设计

多租户 RAG 系统真正的风险不只是搜不到,而是把不该看到的内容查出来、说出来、写回去。本文结合多客户售后知识助手场景,用元数据结构、向量检索过滤、回答策略和审计回写示例拆解租户、资源、检索、生成、审计五层权限边界。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 220

关于CUP运算器如何运算

运算器是一个负责算术运算和逻辑运算的模块,主要包含算术逻辑单元(Arithmetic Logic Unit,简称ALU)和浮点运算单元(Floating Point Unit,简称FPU)。ALU的主要功能:在控制信号的作用下,完成加、减、乘、除等算术运算,以及与、或、非、异或等逻辑运算以及移位、补位等运算。通常ALU由两个输入端和一个输出端(两个值输入,一个结果输出)。FPU主要负责浮点运算和高精度整数运算。有些FPU还具有向量运算的功能,另外一些则有专门的向量处理单元。

m0_69395323的博客 740

PINN物理信息网络 | 非线性薛定谔方程的物理信息神经网络

PINN物理信息网络 | 非线性薛定谔方程的物理信息神经网络

算法如诗的博客 1299

处理器到底是怎么计算加法的

上一篇文章中有很多没解释清楚的地方和错误,我们再来解释一遍。整数怎么转换成二进制?和上次一样,我们在二进制数字的前面加上B其实这个问题可以用一个很简单的方法。我们以五十为例。这个方法很...

UTF80的博客 579

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

57 高精度整数加法

题目描述 在计算机中,由于处理器位宽限制,只能处理有限精度的十进制整数加减法,比如在32位宽处理器计算机中, 参与运算的操作数和结果必须在-231~231-1之间。如果需要进行更大范围的十进制整数加法,需要使用特殊 的方式实现,比如使用字符串保存操作数和结果,采取逐位运算的方式。如下: 9876543210 + 1234567890 = ? 让字符串 num1=“9876543210”,字符串 n...

wenlyq的博客 291

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VHDL学习笔记-(6)LAB2.1 奔腾Pentium4处理器中的加法器1:进位选择加法器CSLA

奔腾Pentium4加法器1:进位选择加法器CSA的VHDL

卡拉迪亚的曙光的博客 624

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

高精度整数加法

题目描述: 在计算机中,由于处理器位宽限制,只能处理有限精度的十进制整数加减法,比如在32位宽处理器计算机中, 参与运算的操作数和结果必须在-2^31~2^31-1之间。如果需要进行更大范围的十进制整数加法,需要使用特殊 的方式实现,比如使用字符串保存操作数和结果,采取逐位运算的方式。如下: 9876543210+1234567890=? 让字符串num1="9876543210",...

草帽小子的博客 736

三位bcd加法计数器_两个8位BCD编号的加法| 8085微处理器

三位bcd加法计数器Problem statement: 问题陈述: To perform addition operation between two 8-bit BCD numbers using 8085 microprocessor. 使用8085微处理器在两个8位BCD编号之间执行加法运算。 Algorithm: 算法: Load the two numbers in HL ...

cumudi0723的博客 529

汇编语言的前世今生

然后内存将该地址的内容放在数据线上,通过数据线进入运算器,运算器根据指令进行移码,执行指令,与此同时,指令指针寄存器自动修改(根据当前执行指令的地址和长度)为下一条地址的值, 因为指令都是按顺序存放的。答:每个内存单元都有一个编号,第一个内存单元的编号是0,第二个内存单元的编号是1,第三个内存单元的编号是2,依此类推。通过数据线进行数据的读写操作,是双向的。写入:首先,地址线上有一个地址指向内存单元,然后,在数据线上给出一个要读写的数字,最后,读/写控制线发出写命令,这时,内存会把数据写入到内存单元中。

路人的博客 374

CANN/asc-devkit SIMD加法示例

This sample demonstrates the basic usage of Ascend C vector addition. ## Supported Products and CANN Software Versions | Product | CANN Software Version | |------|-------------| | Ascend 950PR/Ascen

gitblog_00308的博客 328

微型计算机的地址加法器,地址加法器

在计算机科学中,每个用于数据存取的基本单位,在进行数字的加法计算时,都被赋予一个独一的序号,是产生数的和的装置,即为地址加法器。中文名地址加法器外文名Address adder分类电脑知识与技术地址加法器65nm工艺下32位PC加法器的设计与应用编辑语音介绍了针对数字信号处理器设计的一 种应用于地址生成单元和算术移位部件的加法器电路—PC加法器(Psum一 Cout加法器),它可以根据不同...

weixin_29819639的博客 1254

verilog加法器_【HDL系列】超前进位加法器原理与设计

上期介绍了半加器、全加器以及行波进位加法器(RCA),本文介绍超前进位加法器(Lookahead Carry Adder,简称LCA)。在介绍超前进位加法器前,我们先来分析下行波进位加法器的关键路径。一、行波进位加法器关键路径分析N比特行波进位加法器可由N个全加器级联而成,电路的延迟包括门延迟和线延迟等,分析忽略线延迟。单比特全加器门电路图从输入a,b,cin到输出s和cout,有以下路径: a-...

weixin_39927993的博客 489

国科大计算机体系结构考试专用

横线上方为基础知识和解题思路,横线下方为具体题目解答 考试考的大部分是课后题,但是不完全是老师划的题,所以尽量全部复习 这些考试资料只是一些绝大部分正确的感性资料,需要你自己去总结思考 让我重学一遍,我会以课程视频为基础(b站有回放你也可以自己录)把每个课后题搞清楚,当然前提是你不要选太多的课 计算机体系结构 第二章 在3台不同指令系统的计算机上运行同一程序P时,A机需要执行 1.0∗1081.0 * 10^81.0∗108 条指令,B机需要执行 2.0∗1082.0 * 10^82.0∗108 .

qq_43840665的博客 2565

处理器结构及其工作原理

处理器不是法师手中的仙器,它之所以能计算数学题,是因为其特殊的设计。处理器是一个“器件”,不太大,有的是长方形,有的是正方形,就像饼干。实际上,它是一块集成电路。     如图2-2所示,在处理器的底部或者四周,有大量的引脚,可以接受外面来的电信号,或者向外发出电信号。每个引脚都有自己的用处,在往电路板上安装的时候不能接错。所以,如图所示,处理器在生产的时候,都会故意缺一个角,这

鸿雁雀 1824

算术编码二进制例题a1a2a3a4_在树莓派上学习ARM汇编 第二章 寄存器和基本算术...

寄存器本质上,计算机中的处理器不过是强大的计算器。 只能使用存储在称为寄存器的很小的存储器中的值来进行计算。 Raspberry Pi中的ARM处理器具有16个整数寄存器和32个浮点寄存器。 处理器使用这些寄存器分别执行整数计算和浮点计算。 我们现在暂时将浮动寄存器放在一边,最终我们将在以后的文章中再次讨论它们。 让我们关注整数寄存器。ARM中的那16个整数寄存器的名称从r0到r15。 它们可以容...

weixin_30325875的博客 371

x86汇编语言(1) 汇编语言的前世今生

x86汇编语言(1) 汇编语言的前世今生 用电来表示数字 导线中的开关有开和关两种状态,计算机使用0和1来表示数字,导线闭合表示1,导线断开表示0 所以我们可以用一排导线来表示一个二进制数 装上灯泡后,也可以看灯泡的亮暗表示二进制数 二进制加法机 加法器的结构:两个输入端只要一修改,输出端的结构立马发生改变 具有记忆功能的器件——寄存器 具有存储功能的触发器的结构说明:左边是输入,下边是锁存开关,当按下锁存开关,右边就会把左边的数据给保存起来,锁存断开后,再修改左边的输入,右边存储的数据也不会发生改

deserts的博客 577
上一篇: 什么是编码
下一篇: 编程用什么语言好
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值