浮動小数点とN進数
前回の授業で話せなかった浮動小数点の話の後、N進数について説明し 演習などを行う。
浮動小数点の扱い
浮動小数点で扱える数値の範囲についても解説。 科学技術計算などで小数点以下のデータを扱う場合、float(単精度実数),double(倍精度実数) を利用する。この場合、数値は仮数部と指数部で扱うことを説明。
符号(s) | 仮数部(e) | 指数部(d) | 意味 | |
float | 1bit | 8bit | 23bit | |
double | 1bit | 11bit | 52bit |
float型は、小数を32bitのデータで扱い、double型は64bitで扱う。このため、以下の様な プログラムを書くと、異常な値が求まるため注意が必要。
double x ; scanf( "%f" , &x ) ; // 3を入力 printf( "%f" , x ) ; // 3は表示されない。 // double型では"%lf"を使う。
N進数
N進数の取扱いということで、 整数部はNで割った余りを下の桁から並べる方法と、 小数部はNをかけて整数部を書き並べる方法について説明する。 例として、0.1)10を2進数に変換すると無限小数になることなども説明。
さらに配布資料を元に、ASCIIコード表や文字コードを使った計算例などを示す。 特に、8進数がC言語では、0123 といった0で始まる数字で表すこと、 16進数が、0x123 といった0xで始まる数字で表すことを説明。 さらに、printfなどのフォーマット指定では、
%d(10進数),%o(8進数),%x(16進数),
%f(float型/小数点形式),%e(float型/指数形式),%g(%f,%eの分かりやすい書式を利用)
といった話を説明する。
来週は、atoi() や itoa() を説明して演習を行う予定。