1
35
重复加法是一种非常低效的乘法方法,想象一下1298654825乘以85324154。使用二进制的长乘法要快得多。
浮点数使用科学记数法。
把它们相乘,把尾数和指数相乘
计算机使用二进制等价物来实现这一点
|
2
14
部分产品
基本上旧的方法使用了一个移位累加算法,在这个算法中,保持第二个数的每一位的和,同时移动部分积。这种方法的唯一问题是,数字存储在2补码中,因此在移位时不能进行简单的逐位乘法。 现在大多数优化都能在一个周期内完成所有部分的求和,这使得计算速度更快,并行化也更容易。 请看这里: http://en.wikipedia.org/wiki/Binary_multiplier 最后,您可以找到一些实现,如 |
3
6
一种方法是使用二进制长乘法:
shift and add 方法。 |
4
5
好的,给你。我不久前(1987年)写过这个,所以有些东西变了,而有些却保持不变。。。 |
5
3
计算机使用Booth算法或其他算法进行移位和加法运算。如果你学习过计算机体系结构课程,那么计算机体系结构方面的书籍应该是学习这些算法的好地方。 |
6
2
要将两个浮点数相乘,请使用以下步骤:
以10为基数乘以5.1E3和2.6E-2 将尾数相乘=>5.1*2.6=13.26(注意,这可以通过整数乘法来实现,只要您跟踪小数点应该在哪里) 添加指数=>3 + -2 = 1
标准化13.26E1=>1.326E2段 |
7
1
|
8
1
答案是,视情况而定。正如其他人所指出的,你可以使用和我们在学校教的相同的算法,但是用二进制代替。但对于少数人来说,还有其他方法。
|
9
1
我只编写了一个简单的程序,用长乘法算法将存储在文件中2行的两个数相乘。它可以将两个数字相乘,这两个数字之间的数值超过10亿
源代码: 请审阅并给出您的意见 http://code.google.com/p/juniormultiply/source/browse/#svn/trunk/src |
Okonjo Mitchel · CS50凯撒:分段故障问题 2 年前 |
Baraa · 而我在java中得到无限的while循环 2 年前 |
deficiencyOn · 用DP求解“背包” 6 年前 |
Robbie · 使用嵌套的if-else语句理解Do-While循环 6 年前 |
Andrei · 查找两个数组中的差异[重复] 6 年前 |
Shkarik · 为什么我在Scala中的二进制搜索实现如此缓慢? 6 年前 |