Java 翻译简单C代码
所以我正在为我的计算机科学课程做一个作业,我们必须学习一个用C编写的算法,并在汇编(SPARC)中复制它。我的问题是,由于我专攻java,我对C代码知之甚少。有人能帮我看一下这段代码并给我它的Java等价物吗?如果你们有任何关于直接使用SPARC的建议,我也愿意接受这些想法。谢谢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)
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代码>是。。