发布网友 发布时间:2023-10-25 05:01
共2个回答
热心网友 时间:2024-11-14 04:38
计算机CPU加,减,乘,除的原理
对于计算机实现加减乘除的研究记录,如有错误还请指出
1.加法计算机的加法就如同我们的数学计算一样,只不过是进制变成了2进制,需要满2进一,如5+3,二进制表示则是
0101
0011
-----
1000
加法的实现由按位加和(异或)和进位(与)两部分组成,内部的实现就是加法器
如上所示的加法器并没考虑上一位的进位问题,因为称为半加器
如果考虑进位,则需要把进位也参与运算
这样的结构就称为全加器多个全加器组合就实现了我们计算机的加法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)
全都转化为加法还能降低电路复杂性,提高计算速度
热心网友 时间:2024-11-14 04:39
你真的以为CPU会做二进制除法呀?它就是作减法(这减法也是用补码做加法)。用被除数减除数,减一次,就在另一个地方加个1,直到被除数小于除数了,那么在那个地方放的数就是商,剩下的被除数就是余数。现在的CPU号称能做乘法除法,实际上还是在做减法,只不过用了大量硬件电路来提高了运算速度。其实CPU只会做加法,核心是许许多多加法器和控制器电路组成的,其他的四则运算全是“设法”用加法完成的。
如果你是手工做除法的话,那和十进制是一样的办法。