2011-10-11 149 views
0

因此,我正在爲我的計算機科學課程進行作業,我們必須採用用C語言編寫的算法,並將其複製到程序集(SPARC)中。我的問題是我知道很少的C代碼,因爲我專精於Java。任何人都可以幫我看看這段代碼,並給我它的Java相當於?如果你們有直接使用SPARC的技巧,我也會接受這些想法。謝謝!翻譯簡單的C代碼

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; 
+1

是不是更容易學習你還不知道的2-3個操作符,並直接將其翻譯爲程序集?此外,你不應該總是試圖把所有事情都映射到高層次,試圖擴展你的知識:)另外,告訴我們你不明白哪一個操作符。 – duedl0r

+0

我學會了操作符,但它仍然有點混淆解釋什麼代碼正在做它 – AlbChu

+2

缺乏C的知識不應該是完成這項任務的問題。如果你是CS學生,這段代碼中使用的原語應該是衆所周知的。 – erlando

回答

0

這是一個代碼,用於自己實現乘法(雖然給定的代碼是錯誤的),而不使用*運算符。看到這個片段,

int multiplier, multiplicand,product=0; 

/*Assume multiplier and multiplicand have their values*/ 

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

現在自己編寫代碼來處理負數。(希望,現在你知道這段代碼的功能)在你的代碼.The neg應該檢查乘數爲負,但其效率不高要只檢查乘數,你應該檢查multipliermultiplicand

1

C的語法非常接近Java的語法。 特別是關於這個剪斷,所以你不應該有任何麻煩來理解它。

無論如何,我不認爲「和」存在於C.

確定或您的片斷?

你在這段代碼中不瞭解什麼?

+2

這應該是一個評論,而不是一個答案。 – DarkDust

+0

是的,對不起。 – lc2817

0

在這段代碼只有一個概念,它是在Java中不同的充:

純C沒有boolean。所以如果表達式返回的不是零,每個比較都是真的。我在代碼中看到兩個重要的地方。

哦,and在C中也是未知的。你確定它是純C嗎? 另外這是一個切切實實的不是C:

(product and multiplier registers) >> 1; 

我想這意味着:

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

如果你知道Java的應該是沒有問題的理解發生了什麼事情與這些提示。

+1

如果它不應該是一個問題,那麼你可以向我解釋什麼'(產品和乘法器寄存器)>> 1;'確實是 – duedl0r

+0

它似乎是僞代碼。 –

+0

@ duedl0r - 編輯 –