2011-10-11 3 views
0

컴퓨터 과학 과정의 과제를 처리하고 있습니다. C로 작성된 알고리즘을 어셈블리 (SPARC)에 복제해야합니다. 내 문제는 내가 자바를 전문으로 이후로 아주 작은 C 코드를 알고있다. 누구든지이 코드를보고 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; 
} 

을이 조각을보기 이제 코드에서 국지적 인 neg가 승수가 음수 여부를 확인하도록되어 (지금 당신이 코드가 무엇을 알고 희망을). 음수를 처리하기 위해 자신을 코드,하지만 효율적이지 승수 만 확인하려면 multipliermultiplicand을 모두 확인해야합니다.

1

C의 구문은 실제로 Java의 구문에 가깝습니다. 특히 이것에 관해서는 snipped 때문에 당신은 그것을 이해하는 데 어떤 어려움도 있어서는 안됩니다.

어쨌든 나는 당신이 확실하거나 조각 있습니까 가 "와"

C.

에 있는지 생각하지 않아?

이 코드에서 무엇을 이해하지 못하겠습니까?

순수 C가 boolean가 없습니다 : 코드의 조각에서

+2

이것은 대답이 아닌 주석이어야합니다. – DarkDust

+0

예, 죄송합니다. – lc2817

0

는 자바에 differnt 만 하나의 개념이있다. 따라서 표현식이 0이 아닌 다른 값을 반환하면 모든 비교가 true입니다. 이 문제가있는 코드에는 두 곳이 있습니다.

오, and은 C에도 알려져 있지 않습니다. 당신은 그것이 순수한 C입니까? 당신이 자바를 알고있는 경우

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

는 아무 문제가 이러한 힌트 무슨 일이 일어나고 있는지 이해하지하는 것 :이 의미 가정

(product and multiplier registers) >> 1; 

: 는 또한이 사람은 기분이 언짢아하지 C입니다.

+1

만약 문제가되지 않는다면, 제게'(곱셈 및 곱셈 레지스터) >> 1;을 설명 할 수 있습니다 .. – duedl0r

+0

의사 코드 인 것 같습니다. –

+0

@ duedl0r - 수정 됨 –