所以我正在为我的计算机科学课程完成一项任务,我们必须采用一种用C编写的算法并在汇编中复制它(SPARC)。我的问题是我知道很少的C代码,因为我专注于java。任何人都可以帮我看一下这段代码并给我它的Java等价物吗?如果你们有任何关于直接使用SPARC的提示,我也会接受这些想法。谢谢!
neg = multiplier >= 0 ? 0 : 1;
product = 0;
for (i = 32; --i >= 0; ) {
if (multiplier & 1)
product += multiplicand;
(product and multiplier registers) >> 1;
}
if (neg)
product -= multiplicand;
答案 0 :(得分:1)
C的语法非常接近Java的语法。 特别是关于这个剪断,所以你不应该有任何麻烦去理解它。
无论如何,我不认为C中存在“和”。
你确定还是你的片段?
您对此代码有何了解?
答案 1 :(得分:0)
在那段代码中,只有一个概念在Java中有所不同:
Pure C没有boolean
。因此,如果表达式返回的不是零,则每次比较都是正确的。我在代码中看到了两个重要的地方。
哦,C中也不知道and
。你确定它是纯C吗?
这个也不是C:
(product and multiplier registers) >> 1;
我认为这意味着:
product >>= 1; // or >>>=, depends on signed/unsigned
multiplier >>= 1; // or >>>=, depends on signed/unsigned
如果您了解Java,那么了解这些提示的内容应该没有问题。
答案 2 :(得分:0)
这是一个自己实现乘法的代码(虽然给定的代码是错误的),而不使用*
运算符。请参阅此片段
int multiplier, multiplicand,product=0;
/*Assume multiplier and multiplicand have their values*/
for(int i= multiplier;i>0;i--)
{
product+=multiplicand;
}
现在编码自己来处理负数。(希望现在你知道代码的作用了。)代码中的neg
应该检查乘数是否为负,但仅检查是否有效乘数,您应该检查multiplier
和multiplicand
。