计算机如何对两个数字进行乘法运算,例如100 * 55。
我的猜测是计算机做了重复加法来实现乘法。当然,整数可能就是这种情况。但是,对于浮点数,必须有其他逻辑。
注意:这是在采访中问到的。
最佳答案
重复加法是将数字相乘的一种非常低效的方式,想象一下将1298654825与85324154相乘。使用二进制进行长乘法的速度要快得多。
1100100
0110111
=======
0000000
-1100100
--1100100
---0000000
----1100100
-----1100100
------1100100
==============
1010101111100
对于浮点数,使用科学计数法。
100 is 1 * 10^2 (10 to the power of 2 = 100)
55 is 5.5 * 10^1 (10 to the power of 1 = 10)
要将它们相乘,则应将尾数相乘并相加指数
= 1 * 5.5 * 10^(2+1)
= 5.5 * 1000
= 5500
计算机使用二进制等效项执行此操作
100 = 1.1001 * 2^6
55 = 1.10111* 2^5
-> 1.1001 * 1.10111 * 2^(6+5)