1. 0以上の整数


演習 1-1 (個人): テキストの手順に従って 10 進数の 53 を 2 進数に変換してみましょう。桁数は n = 8 とします。

A = 53 とする

1. 桁数を n = 8 ビットとする
2. A = 53 を 2 で割る。商は q0 = ?、余りは r0 = ?
3. q0 = ? を 2 で割る。商は q1 = ?、余りは r1 = ?
4. q1 = ? を 2 で割る。商は q2 = ?、余りは r2 = ?
5. q2 = ? を 2 で割る。商は q3 = ?、余りは r3 = ?
6. q3 = ? を 2 で割る。商は q4 = ?、余りは r4 = ?
7. q4 = ? を 2 で割る。商は q5 = ?、余りは r5 = ?
8. q5 = ? を 2 で割る。商は q6 = ?、余りは r6 = ?
9. q6 = ? を 2 で割る。商は q7 = ?、余りは r7 = ?
10. 余りを r7 から r0 まで順に並べると ?
11. 0b を先頭に付ける
12. n = 8 ビットの 2 進数 0b? が得られる

指定した場所で上の穴埋め問題を解いて下さい。


演習 1-2 (個人): テキストの手順に従って演習 1-1 で得られた 2 進数を 10 進数に変換してみましょう。

A = ?・128 + ?・64 + ?・32 + ?・16 + ?・8 + ?・4 + ?・2 + ?・1

 = ? + ? + ? + ? = 53

指定した場所で上の穴埋め問題を解いて下さい。


演習 1-3 (個人): 演習 1-1 で得られた 2 進数を 16 進数に変換してみましょう。

指定場所に解答して下さい。


演習 1-4 (個人): 演習 1-1〜1-3 の結果が正しいかプログラムを使って確認してみましょう。

フォルダ「FP_1_4」を新規作成し、その中に移動します
フォルダ「FP_1_4」の中で新規に 1 つソースを作ります。ファイル名を「Main.cpp」とします。
Main.cpp にテンプレートの内容をコピーします。
一旦実行確認します。
先頭で定義している変数 double A の値を 53、int n_int の値を 8 に変更してもう一度実行確認します。
指定場所に「ソース」「出力結果」を貼り付けて下さい。


2. 負の整数(2の補数)


演習 1-5 (個人): テキストの手順に従って 10 進数の -53 を 2 進数に変換してみましょう。桁数は n = 8 とします。

A = -53 とする

1. |A| = 53 の 2 進数は演習 1-1 より n = 8 ビットの 2 進数 0b ?
2. 先頭ビットが 0 なので桁数 n はそのまま
3. 1 と 0 をひっくり返すと 0b ?
4. 1 を足して n = 8 ビットの 2 進数 0b ? が得られる

指定した場所で上の穴埋め問題を解いて下さい。


演習 1-6 (個人): 演習 1-5 で得られた 2 進数を 16 進数に変換してみましょう。

指定場所に解答して下さい。


演習 1-7 (個人): 演習 1-5〜1-6 の結果が正しいかプログラムを使って確認してみましょう。

フォルダ「FP_1_4」を「FP_1_7」にコピーして、その中に移動します
「Main.cpp」を開きます
main 関数内の A の値を -53 に変更して実行確認します。
指定場所に「ソース」「出力結果」を貼り付けて下さい。


3. 0以上かつ1より小さい小数


演習 1-8 (個人): テキストの手順に従って 10 進数の 0.1 を 2 進数に変換してみましょう。ただし有効桁数 を n = 4 ビットとします。

A = 0.1 とする

1. 有効桁数 を n = 4 ビットとする
2. A に 2 をかけると ? 。積の整数部分は r{-1} = ?、積から r{-1} を引いた残りは p{-1} = ?
3. p{-1} = ? に 2 をかけると ? 。積の整数部分は r{-2} = ?、積から r{-2} を引いた残りは p{-2} = ?
4. p{-2} = ? に 2 をかけると ? 。積の整数部分は r{-3} = ?、積から r{-3} を引いた残りは p{-3} = ?
5. p{-3} = ? に 2 をかけると ? 。積の整数部分は r{-4} = ?、積から r{-4} を引いた残りは p{-4} = ?
6. p{-4} = ? に 2 をかけると ? 。積の整数部分は r{-5} = ?、積から r{-5} を引いた残りは p{-5} = ?
7. n = 4+1 = 5 回繰り返したので計算終了
8. r{-1} を先頭に r{-5} まで順に並べて ?
9. 0b を先頭に付けると ?
10. 最後のビット(r{-5}) が ? なので最後のビットを ?
11. n = 4 ビットの 2 進数 0b ? が得られる

指定した場所で上の穴埋め問題を解いて下さい。


演習 1-9 (個人): テキストの手順に従って演習 1-8 で得られた 2 進数を 10 進数に変換してみましょう。

A = ?・(1/2) + ?・(1/4) + ?・(1/8) + ?・(1/16)

 = ? + ? + ? + ? = ? = ?

指定した場所で上の穴埋め問題を解いて下さい。


演習 1-10 (個人): 演習 1-8 で得られた 2 進数を 16 進数に変換してみましょう。

指定場所に解答して下さい。


演習 1-11 (個人): 有効桁数 n = 4 ビットで 10 進数の 0.1 を 2 進数に変換した時の丸め誤差はいくつでしょうか。

指定場所に解答して下さい。


演習 1-12 (個人): 演習 1-8〜1-11 の結果が正しいかプログラムを使って確認してみましょう。

フォルダ「FP_1_7」を「FP_1_12」にコピーして、その中に移動します
「Main.cpp」を開きます
先頭で定義している変数 double A の値を 0.1 に変更して実行確認します。int n_decimal は 4 のままで結構です
指定場所に「ソース」「出力結果」を貼り付けて下さい。