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

http://shirenyin.i.sohu.com/blog/view/73470039.htm
 

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

乘数、被乘数都要先转化为二进制,二进制的乘法远比十进制简单,好比乘数是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++的位或,位移有关......

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