0

アセンブリ言語で次のシーケンスを解決する方法:

R1=-2+4-6+8-10.....+-N

注:N値は入力として

4

2 に答える 2

1

パターンを見つけるために、これのいくつかの値を見てください。

N     R1
2     -2
4     +2
6     -4
8     +4
10    -6
12    +6

だから、いつN%4 == 0、そしてR1 = N/2、そしていつN%4 == 2、そしてR1 = -(N/2 + 1)

したがって、これを計算するには、次のようにします (疑似コードですが、アセンブリに簡単に変換できます)。

     if N%2 is not 0 then error: invalid input
     R1 = N/2
     if N%4 == 0 then jump to done
     R1 = R1 + 1
     R1 = -R1
   done:
于 2013-03-31T13:49:30.863 に答える
-1
It is an arithmetico geometric progression with a = -2, d = -2 , r = -1
an = (a + (n-1)*d)*(r^(n-1))
N = an = 2*n*((-1)^n)
n = absolute(N) / 2                                                     -1
R1 = Sn
on solving you will get
R1 = ((-1)^n)*n - ( 1 + (-1)^(n-1) )/2                                  -2

eqn 1 と 2 を使用して R1 を取得できます。ここにCのサンプルがあります

#include<math.h>

int main() { 
float nlast,n,r1;
nlast = 12;
n = abs(nlast) / 2;
r1 = pow(-1,n)*n - ( 1 + pow(-1,n-1) )/2;
return(r1);
}

このサイトを使用して、アセンブリ コードを取得できます。

于 2013-03-31T14:30:01.820 に答える