搜集汇总:计算机中乘除法的本质

来源:互联网 发布:通联数据和万的待遇 编辑:程序博客网 时间:2024/04/30 00:06
http://shirenyin.i.sohu.com/blog/view/73470039.htm

计算机中如何用加法算乘法和除法运算

乘数、被乘数都要先转化为二进制,二进制的乘法远比十进制简单,比如乘数是1011,只需将将被乘数分别左移3位、1位,移动后补入0,并将这三个数(被乘数左移3位的、被乘数左移1位的及未移位的被乘数)在累加器中相加,所得总和就是积,根据需要积可再转化为十进制。 除法与乘法类似,只不过将左移改为右移,加改成减。实际上减也是通过取补码后再加,因此计算机芯片上的累加器是最繁忙的部分。

==========================================================
乘法的实质就是:把一个数n份相加除法的实质就是:把一个数分成n等份你说的左移就等于乘以2只是计算机中的实现,因为计算机是二进制表示,所以这个“左移一位”并不是“乘法的实质”,它只是“在计算机中恰好左移一位等于乘以二”而已,就像在我们一般的十进制表示中,左移一位就等于乘以10一样,你明白我的意思么?只是恰好能这么算而已,这个做法本身并不是什么“乘法的实质”。在二进制表示中做除法的话,如果除数“恰好”是2的整数次幂,可以直接右移log2n位;
=====================================================
100001x3=100001x(2+1)100001x2=100001 左移一位,

======================================================
C程序或者说计算机做乘法的速度如何?差别多大?看到这么个说法,“加法比减法快,乘法比除法快原因是计算机硬件只能做加法,CPU里面都是加法器”。这个说法应该正确吧?然后我就想知道,计算机做一次乘法和一次除法分别相当于多少次加法?谁能给出个具体的数或者概念?

做乘法和做除法的次数是根据位数和要求的精度确定的。而且计算机的乘除法一般用补码计算,符号位参加运算

我不是很了解CPU是怎么运算的,但看到你的话我认为是:    1+1=1+1   2-1=2+(-1)   2*2=2+2 ......        因为全是2进制,可能跟C++的位或,位移有关......

这个是由于计算机硬件的设计关系决定的!计算机是采用二进制体制的,是通过一些硬件关系(如与非门、与门、非门等等)这样把两个寄存器中的数据进行加的过程就比较容易一些实现,同样的道理乘法要比除法容易实现一些!