• 検索結果がありません。

プログラミング演習

N/A
N/A
Protected

Academic year: 2021

シェア "プログラミング演習"

Copied!
12
0
0

読み込み中.... (全文を見る)

全文

(1)

プログラミング演習 II

2003

1

1月

12

日(第

5

回)

木村巌

(2)

今日やること

負の整数を考慮した、加減算の実装

(3)

復習

前回は、符号を表す桁を設けて、正負 の整数を表せるようにした

データ型の実装の詳細を隠蔽するため

、各桁、符号などを設定したり、読み

出したりするための関数を用意した

Mpi (Multiple Precision Integer)

の間の

等号、不等号などを用意した

(4)

整数の加算

自然数の加算は前々回に実装した

整数の加算

a+b

を、引数の符号を考慮 して整理する

a ==0 || b ==0: 演算は必要ない

a>0&&b>0: 自然数同士の加算

a>0&&b<0: a + b = a – (-b): 減算に帰着

a<0&&b>0: 演算の順序を変えて上に帰着

a<0&&b<0: a+b=-((-a)+(-b)): 自然数の和と

、符号の反転に帰着

(5)

整数の加算(続き)

つまり、整数の加算を実装するには、

整数の符号の反転と、減算とが必須 符号の反転……

元の mpi の符号を反転する: mpi_negate ()

元の mpi と同じ絶対値を持ち、符号のみ 異なる mpi を新たに作る : mpi_inverse()

どちらも必要となる

(6)

整数の加算: mpi_add()

整数の加算を行う関数:

long *mpi_add (long *, long *)

この関数は、符号を考慮して、自然数 の加減算、符号の反転へ、適切に帰着 させる関数

実際に自然数の加算を行うのは、

long * mpi_add0(long *, long *)

(7)

整数の減算

一番単純なケース:

a > b > 0

繰り下がりを考慮しなければならない

(8)

繰り下がり : 124 – 35

1 2 4

-- 3 5

1 2 14

-- 4 5

9

1 12 14

-- 1 4 5

8 9

ここで 2 1 にせず

3 4 にしてい るのがミソ

ここも同様.

(9)

整数の減算

繰り下がりを考慮して、

a > b > 0

の場 合に

a-b

を実装したのが、

long *mpi_s ub0(long *, long *)

一般の整数の

a-b

を行うのは、

long *m pi_sub(long *, long *).

符号や引数の大小を考慮して、

a > b >

0

の場合と、符号の反転に帰着させる

(10)

レポート課題

Web

に掲示した

mpi_mulbympi_addmpi_sub.c

の指示に

従って、関数

mpi_mul()

の実装を完成

させること。そのさい、通常の

long

同様の関数を書いた、

mulbyaddsub.c

を参考にせよ

(11)

レポート課題提出要領

2003

11

11

日(火)一杯に、木村 までメールで送ること.

アドレスは[email protected]

添付ファイルではなく、できるだけメー ル本文にレポート本文を記載してくださ い.

文献や友人のレポートを参考にした場合

は、それを明記のこと.

(12)

レポートについての注意

資料や他の人のレポートを参考にした 場合は、それを理解すること

間違ったレポートを引き写したとしか いえないものが散見されます

自分で考えてもわからず、人のレポー トも十分に理解できないのでは、全く 意味がない

十分理解できないなら、授業に出席し

て質問してください.

参照

関連したドキュメント

実際, クラス C の多様体については, ここでは 詳細には述べないが, 代数 reduction をはじめ類似のいくつかの方法を 組み合わせてその構造を組織的に研究することができる

(注)本報告書に掲載している数値は端数を四捨五入しているため、表中の数値の合計が表に示されている合計

  支払の完了していない株式についての配当はその買手にとって非課税とされるべ きである。

行ない難いことを当然予想している制度であり︑

○関計画課長

□ ゼミに関することですが、ゼ ミシンポの説明ではプレゼ ンの練習を主にするとのこ とで、教授もプレゼンの練習

(注)本報告書に掲載している数値は端数を四捨五入しているため、表中の数値の合計が表に示されている合計

したがいまして、私の主たる仕事させていただいているときのお客様というのは、ここの足