Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 翻译简单C代码_Java_C_Assembly_Code Translation_Sparc - Fatal编程技术网

Java 翻译简单C代码

Java 翻译简单C代码,java,c,assembly,code-translation,sparc,Java,C,Assembly,Code Translation,Sparc,所以我正在为我的计算机科学课程做一个作业,我们必须学习一个用C编写的算法,并在汇编(SPARC)中复制它。我的问题是,由于我专攻java,我对C代码知之甚少。有人能帮我看一下这段代码并给我它的Java等价物吗?如果你们有任何关于直接使用SPARC的建议,我也愿意接受这些想法。谢谢 neg = multiplier >= 0 ? 0 : 1; product = 0; for (i = 32; --i >= 0; ) { if (multiplier & 1)

所以我正在为我的计算机科学课程做一个作业,我们必须学习一个用C编写的算法,并在汇编(SPARC)中复制它。我的问题是,由于我专攻java,我对C代码知之甚少。有人能帮我看一下这段代码并给我它的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;

C的语法非常接近Java的语法。 特别是关于这个问题,你不应该有任何困难去理解它

无论如何,我认为C中不存在和“

你确定还是你的片段


在这段代码中,您不理解什么?

在这段代码中,只有一个概念在Java中是不同的:

纯C没有
布尔值
。因此,如果表达式返回的值不是零,则每个比较都是真的。我在代码中看到了两个重要的地方

哦,
在C中也是未知的。你确定它是纯C吗? 另外,这一个显然不是C:

(product and multiplier registers) >> 1;
我认为这意味着:

product >>= 1;     // or >>>=, depends on signed/unsigned
multiplier >>= 1;  // or >>>=, depends on signed/unsigned

如果您了解Java,那么理解这些提示的作用应该不会有问题。

这是一个自己实现乘法的代码(尽管给定的代码是错误的),而不需要使用
*
运算符。看这个片段

int multiplier, multiplicand,product=0;

/*Assume multiplier and multiplicand have their values*/

for(int i= multiplier;i>0;i--)
{
product+=multiplicand;
} 

现在自己编写代码来处理负数。(希望现在您知道代码的作用)。代码中的
neg
应该检查乘数是否为负数,但仅检查乘数是无效的,您应该同时检查
乘法器
被乘数

学习您还不知道的2-3运算符并将其直接转换为汇编不是更容易吗?此外,你不应该总是试图把所有的东西都映射到更高的层次上,尝试扩展你的知识:)另外,告诉我们你不理解哪个操作符..我学习了操作符,但解释代码的用法仍然有点混乱。缺少C语言的知识对于完成这项任务来说应该不是一个问题。如果你是一名CS学生,那么这段代码中使用的原语应该是众所周知的。而你的代码段是错误的。这应该是一条注释,而不是答案。如果这不应该是一个问题,那么你可以向我解释什么是
(乘积和乘法器寄存器)>>1是。。