翻译简单的C代码

时间:2011-10-11 07:57:45

标签: java c assembly code-translation sparc

所以我正在为我的计算机科学课程完成一项任务,我们必须采用一种用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;

3 个答案:

答案 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应该检查乘数是否为负,但仅检查是否有效乘数,您应该检查multipliermultiplicand