本文主要是介绍搜集汇总:计算机中乘除法的本质,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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++的位或,位移有关......
这个是由于计算机硬件的设计关系决定的!计算机是采用二进制体制的,是通过一些硬件关系(如与非门、与门、非门等等)这样把两个寄存器中的数据进行加的过程就比较容易一些实现,同样的道理乘法要比除法容易实现一些!
这篇关于搜集汇总:计算机中乘除法的本质的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!