ホーム » スタッフ » 斉藤徹 » 数値の型とN進数

2011年4月
« 3月   5月 »
 12
3456789
10111213141516
17181920212223
24252627282930

最近の投稿(電子情報)

アーカイブ

カテゴリー

数値の型とN進数

先日の変数の寿命とスコープの話の次ということで、数値の型とN進数について説明。

数値の型によって、初心者がやりそうな間違いを説明しながら、 C言語の型変換が、「精度が異なる場合は、精度のいい方に型変換」とか「型キャスト」を説明。

int a[4] = { 10 , 11 , 12 , 20 } ;
int sum = 0 , count = 0 , i ;
for( i = 0 ; i < 4 ; i++ ) {
sum += a[i] ;
count++ ;
}
printf( "%f" , sum / count ) ;
// 実行結果は、%fとintの型の不一致で、異常値の表示。
// (double) sum / (double) count と書くべき。
double x ;
for( x = 0 ; x < 3.141592 ; x += 1/18 * 3.141592 ) {
printf( "%f %f\n" , x , sin( x ) ) ;
}
// 1/18*3.14 は、1/18が整数除算で0になるため
// 無限ループ

N進数

N [bit]で扱える数値が であらわせ、 概数を求める場合、 計算できることや、 より、 で大体の桁数が計算できることを説明。

を説明し、元の数をNで割った余りを下の桁から書き並べると、N進数に直せることを説明。 この後、8進数、16進数、10進数変換の理解度を確認。 C言語での0123の8進数表記や、0x123の16進数表記、printfでの"%o","%x"なども説明。

次に、小数点以下のN進数の説明を行う。 より、小数点以下にNをかけると、整数部にN進数の小数点上位1桁が得られることを説明する。 これより、0.1)10といった値を2進数にすると、無限循環小数になることを示す。 この結果、C言語で、0.1を10回積算しても、正確に1.0といった値にならない可能性があることを紹介する。