情報処理4レポート課題(9)

更新:2008年11月18日


  1. 符号なし整数を扱うunsigned int型をバイナリモードでファイルに書き込みした際に、 そのバイト列がどうなっているのかを確認します。
    1. 次の文章において、(a)から(h)までに適当な文言に置き換えて下さい。

      次のプログラムはsizeof演算子を用いてchar型の大きさを画面表示します。
      sizeof_char.c
      #include<stdio.h>
      
      int main(void){
      	printf("%d\n", sizeof(char));
      	return 0;
      }
      
      実行結果からchar型の大きさは(a)バイトであることが分かります。 このプログラムを改訂すればunsigned int型の大きさを調べることもでき、 使っている計算機でのunsigned int型は(b)バイトです。 bfile1.cを書き換えてunsigned int型を何かバイナリモードでファイルに書き込むと そのファイルの大きさは(c)バイトです。 unsigned int型で表すことのできる数値は0から4294967295までの(d)個です。 unsigned int型の大きさ(b)バイトは(e)ビットで、 unsigned int型が(f)の(g)乗個の数値を扱うことができることを意味します。 実際、(f)の(g)乗は(h)です。

    2. bfile1.cを次のように改訂して、符号なし整数を扱うunsigned int型をバイナリモードで書き込むようにし、下の表を埋めましょう。
      • aの型をunsigned intで宣言する。
      • aへの設定値の後ろにuを付ける (aに123を設定したい場合にはa=123u;とする)。
      設定値バイナリコード備考
      0u 
      1u0100 0000 
      2u0200 0000 
      10u 
      16u 
      255u 
      256u 
      65536u 
      16777215u 
      16777216u 
      4294967295u 
      4294967296u コンパイル時に警告が出ますが無視して実行してみて下さい。
    3. unsigned int型をバイナリモードでファイルに書き込みした際に、 そのバイト列がどうなっているのかを説明して下さい(ヒント:エンディアン)。
  2. 符号付き整数を扱うint型をバイナリモードでファイルに書き込みした際に、 そのバイト列がどうなっているのかを確認します。
    1. 次の文章において、(a)から(h)までに適当な文言に置き換えて下さい。

      次のプログラムはsizeof演算子を用いてchar型の大きさを画面表示します。
      sizeof_char.c
      #include<stdio.h>
      
      int main(void){
      	printf("%d\n", sizeof(char));
      	return 0;
      }
      
      実行結果からchar型の大きさは(a)バイトであることが分かります。 このプログラムを改訂すればint型の大きさを調べることもでき、 使っている計算機でのint型は(b)バイトです。 bfile1.cを書き換えてint型を何かバイナリモードでファイルに書き込むと そのファイルの大きさは(c)バイトです。 int型で表すことのできる数値は -2147483648から2147483647までの(d)個です。 int型の大きさ(b)バイトは(e)ビットで、 int型が(f)の(g)乗個の数値を扱うことができることを意味します。 実際、(f)の(g)乗は(h)です。

    2. bfile1.cを次のように改訂して、符号付き整数を扱うint型をバイナリモードで書き込むようにし、下の表を埋めましょう。
      • aの型をintで宣言する。
      • aに123を設定したい場合にはa=123;とする。
      設定値バイナリコード備考
      0 
      1 
      2 
      10 
      16 
      255 
      256 
      65536 
      16777215 
      16777216 
      2147483647 
      2147483648 コンパイル時にオプション「-std=c99」を付けて下さい。
      -1 
      -2 
      -3 
      -2147483646 
      -2147483647 
      -2147483648 コンパイル時にオプション「-std=c99」を付けて下さい。
      -2147483649 コンパイル時に警告が出ますが無視して実行して下さい。
    3. int型をバイナリモードでファイルに書き込みした際に、 そのバイト列がどうなっているのかを説明して下さい(ヒント:エンディアンと2の補数表現)。

提出内容は問題本文・解答・考察・感想・作業時間です。

提出先アドレスを誤らないように気をつけて下さい。

Subjectは半角英数・アンダースコア・空白のみで構成し、 学番・氏名・第9回レポート課題であることが分かるように。

問題1-1については,11月18日24:00までに 受信履歴に掲載されるようにして下さい。

問題1-2,1-3,2-1,2-2,2-3については,11月24日24:00までに 受信履歴に掲載されるようにして下さい。


何かありましたら、 まで。