计算机中的各种运算,都是用硬件完成的。
CPU,即“中央处理单元”。其中,含有:运算器和控制器。
运算器,又称为 ALU (算术逻辑单元),其主要部分是加法器。
n 位加法器的逻辑电路图如下:
它有两个 n 位的二进制加数:An-1…A0 和 Bn-1…B0。
相加后,和,也是 n 位二进制数,即:Sn-1…S0。
此外,还有一个一位的进位,称为:Cn。
有了这个电路,CPU 不但可以做加法,而且还可以做减法!
用加法器完成减法运算的方法是很简单的,就是:舍弃进位!
例如做加法:7 + 15 = 22。
用四位加法器来运算,其过程和常规的算法相同,如下:
运算结果是:和数= 0 1 1 0 = 6、进位 = 1 = 16。
综合这五位数,正是:1 0 1 1 0 = 22。
正确无误!
假如你弄丢了进位,会怎样呢?
丢了进位,你就少算了 16,这就是:7 + 15-16 = 7-1 = 6 !
丢了进位,+15 就相当于-1 !
丢了进位,正数,就成了负数!
丢了进位,加法,就成了减法!
结论:只要你舍弃进位,用加法器,就能完成减法运算!
虽然,“+15”就是“-1”,看起来,不很直观。
但是,它们的关系,你一定能看出来:15 = 16 - 1。
通用的转换公式,就是:负数的补数 = 2^n + 负数。
如果你看不懂这些,你还是跟计算机老师去学“符号位原码反码取反加一符号位不变”吧。
但是,即使你背熟了那一套说法,你也不会懂得“计算机怎么做减法”。
为什么计算机专业老师总是拿那些来忽悠学生呢?
因为,计算机专业老师文化水平太洼,弄不明白小学算术题。他们只会跟风老外!
~~~~~~~~~~~~~~~~~
虽然,乘法,可以用连加来完成,减法,也可以用连减来实现。但是,这么做就太慢了。
电子技术专业工程师,早已用逻辑电路设计出来了:乘法器电路、除法器电路。
用这些运算电路,就可以快速完成“加减乘除、与或非、移位”等等运算。
这些基本运算器,都集成在 CPU 芯片中,称为:算术逻辑单元(ALU)。
具体电路过于复杂,就不必深究了。
所有计算都由指令集实现.
CPU只输出纯2进位0和1.
比如1+1那么指令集编写时候就会写入2.以后1+1直接就运算出2的结果.
所以不管什么计算.其实在指令集里面都存在逻辑计算结果.也就是先前就已经得出了.
只等你输入而已.