计算机CPU加,减,乘,除的原理

计算机CPU加,减,乘,除的原理

对于计算机实现加减乘除的研究记录,如有错误还请指出

1.加法

计算机的加法就如同我们的数学计算一样,只不过是进制变成了2进制,需要满2进一,如5+3,二进制表示则是

 0101
 0011
-----
 1000

加法的实现由按位加和(异或)和进位(与)两部分组成,内部的实现就是加法器

img

如上所示的加法器并没考虑上一位的进位问题,因为称为半加器

在这里插入图片描述

如果考虑进位,则需要把进位也参与运算

在这里插入图片描述

这样的结构就称为全加器

在这里插入图片描述

多个全加器组合就实现了我们计算机的加法

2.减法

计算机减法其实可以转化为加法,像指针时钟一样,我们调整时间+1,可以选择顺时针增加1,或者逆时针减少11,最终都能达到调整时间的目的

这里有个模的概念,

例如对于指针时钟来说,它的模是12,

对于电子时钟来说,它的模则是24,

对于二进制8位运算来说,它的模就是128

对于可以取模的运算,减法都可以转化为加法

对于计算机的运算也是一样,如8位运算,除去一位符号位,进行运算减1,可以转化为加127来实现,这也是计算机实现减法转换加法的原理

了解减法还需要先了解原码,反码,补码的概念

原码:带符号位的,其余位表示数值

反码:正数的反码是原码,负数的反码是除了符号位之外,其余位取反

补码:正数的补码是原码,负数的补码是反码加一

计算机的运算普遍采用的都是补码,采用补码的优势是可以将减法转化为加法,这样可以使用加法器实现减法,降低电路复杂度,提高计算效率。另外使用补码也可以避免+/- 0的问题

如-1+3二进制表示则为

 10000001
 00000011
---------

取反码则为

 11111110
 00000011
---------

取补码则为

 11111111
 00000011
---------
 00000010

结果为2

其实补码运算得出结果后还需对结果进行一次取补操作,这是为了对符号位的处理,如-3+1

补码计算则为

 11111101
 00000001
---------
 11111110

结果是-126

我们需要对结果再取一次补码

11111110 -> 10000001 -> 10000010

结果是-2

部分的疑问和理解:

1.取补码问什么要加1?

取补码相当于模减去原码(不考虑符号位),既时钟问题的向前拨动1,和向后拨动11,

8位二进制,1的补码则为127

取反,0000001取反为1111110(不考虑符号位),既1和126,需要反码+1才能得到补码

2.计算机为什么使用补码进行运算?

可以避免对于+/-符号的判断,不管是加法还是减法都是加法运算,还能避免+/-0的歧义,而且还能多表示一个负数(如8位数的-128)

全都转化为加法还能降低电路复杂性,提高计算速度

3.乘法

计算机乘法是移位和累加实现的,每位的数字代表需要移动几位,如5*3,二进制表示

 00000101
 00000011
---------
 00000101
 00001010  //移位
---------
 00001111

4.除法

计算机除法的实现是移位和累减,首先对齐除数和被除数,对齐后相减,

如果结果大于等于0,则记录商1;如果结果小于0,则记录商0

之后右移,结果作为下次运算的被除数,并将商左移

循环这个过程,直到除数移回原位,并记录余数

 00001110
 00000010
---------
 00001110
 00001000   // 左移对齐
---------
 00000110   // 记录商1 (0001)
 00000100   // 右移
---------
 00000010   // 商左移并记录商1 (0011)
 00000010   // 右移
---------
 00000000   // 商左移并记录商1 (0111)
 			// 余数为0

因为减法是加法实现的,因此除法的效率是最慢的

图片资源来源:

【从零开始自制CPU之学习篇07】最简单的ALU—全加器 - 闪客sun - 博客园 (cnblogs.com)

  • 9
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
CPU全称为中央处理器,是计算机的核心部件之一。它由运算器、控制器和存储器组成。运算器负责执行各种算术和逻辑运算,控制器负责指挥和协调计算机各部件的工作,存储器则用于存储数据和指令。CPU计算机的大脑,决定了计算机的计算能力。它是一种小型的计算机芯片,嵌入在各种设备上,如台式机、笔记本电脑或平板电脑的主板上。通过在单个计算机芯片上放置数十亿个微型晶体管来构建CPUCPU的结构可以从逻辑上划分为控制单元、运算单元和存储单元,它们通过内部总线连接。控制单元负责控制计算机的工作流程,运算单元负责执行各种算术和逻辑运算,存储单元则用于存储数据和指令。CPU与主存之间通过地址进行通信,CPU从主存中读取数据和指令,并将结果写回主存。主存也被称为内存,是计算机中进行程序运行和数据存储的地方。主存分为只读存储器(ROM)、随机存储器(RAM)和高速缓冲存储器(Cache)。CPU与内存之间的工作关系是:执行一个程序时,首先将程序的代码和数据载到内存中,然后CPU从内存中读取指令,解析并执行它们,最终得到程序的结果。CPU还包含寄存器,它是一种高速的存储器,用于临时存放数据和指令,以提高计算效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [计算机组成原理——CPU](https://blog.csdn.net/include_zrl/article/details/112382253)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值