Presentation is loading. Please wait.

Presentation is loading. Please wait.

プログラミング演習I 2003年5月7日(第4回) 木村巌.

Similar presentations


Presentation on theme: "プログラミング演習I 2003年5月7日(第4回) 木村巌."— Presentation transcript:

1 プログラミング演習I 2003年5月7日(第4回) 木村巌

2 知識編:C言語の初等文法 いくつかの型の詳細 条件文

3 実践編:条件文、ループ構文を 用いたプログラミング
If文をつかったプログラミング

4 いくつかの型の詳細 前回、整数型、浮動小数点数型、文字型について学んだ それらの型が表現できる範囲をはっきりさせておこう!

5 ビットとバイト 1bitとは、2進表記一桁で表現できる情報量のこと 端的にいうと、0か1.
1byteとは、8bitのこと.つまり、0, 1が8桁. ( )から、( )まで、256通りの組み合わせがある キロバイト、メガバイト、ギガバイト、テラバイト

6 整数型の詳細 int型は、short, 指定なし, longの三種類の大きさと、signed, unsignedの符号の有無の区別がある.
略記:short intはshort, long intはlongと略記可能 sizeof 演算子……sizeof(型名)で、型が占めるメモリの大きさを返す

7 整数型の大きさ #include <stdio.h> int main(void) {
printf (“short %d\nint %d\nlong %d\n”, sizeof (short), sizeof (int), sizeof (long)); return 0; } sizeofint.cとして保存し、コンパイル&実行してみよう.

8 整数型の大きさ(続き) 現在の主要な環境では limits.hに個々の値の上下限が定義されている(ANSI Cの要請)
short 2byte, int 4byte, long int 4byte C99ではlong longも定義されており、8byte となることが多い. 個々のサイズがANSI Cで定義されているわけではない!定義では、 2≦sizeof(short)≦sizeof(int)≦4≦sizeof(long) limits.hに個々の値の上下限が定義されている(ANSI Cの要請)

9 2の補数表現 符号付整数のビット列としての表現法 正の整数:単純に2進表現する
例:0 = (0), 1 = (1), 2 = (10), 3 = (11), …… nビットでのとき、n-1ビット使える.0~2n-1-1 負の整数:すべてのビットの補数を取り(1を0に、0を1にする)、更に1加える 例:-1→(000…0001)ー補数→(111…1110)ー1加える→(111…1111) = -1.

10 2の補数表現(続き) 負の最大値(100…000)または-2^(n-1)に相当する正の整数は存在しない.この値が負にされても、同じ値になる.
符号付整数のビット列としての表現には、他に 1の補数表現 符号ビットを独立に持つ表現 がある.正の整数の表現はどれも同じ.

11 符号なし整数 unsignedを指定すると、正の整数のみあらわす:unsigned short, unsigned int, unsigned long. n bitで0から(2^n)-1までを表現 (111…111)は符号なしの場合(2^n)-1.符号付で2の補数表現なら、-1である. 符号なし整数に対する算術演算は、すべて2^nを法として行われる.

12 符号なし整数(続き) #include <stdio.h> int main (void) {
printf ("%u\n", 0xffffffff + 0x1); return 0; } uint.cとして保存、コンパイルして実行すると幾つになるか?

13 文字型 char型.char, signed char, unsigned charの3つ
占めるメモリは同じ.多くの場合、sizeof(char) = sizeof (signed char) = sizeof (unsigned char) = 1. ANSI Cで定義されているわけではない.limits.hのCHAR_BITという定数を参照. getchar()を使うときに、戻り値をcharとするとトラブルの元(intとすべき).詳細は後述.

14 浮動小数点数型 float, double, long doubleの3種類 それぞれの大きさはANSI Cでは規定されていない
sizeof()演算子でバイト幅を調べよ! floatで表せる範囲はdoubleでも表せ、doubleで表せる範囲はlong doubleでも表せる doubleとlongとは多くの場合相互変換可能(だが、ANSI Cでは規定されていない)

15 浮動小数点型(続き)

16 浮動小数点数型(続き) 32bit doubleの場合、符号に1bit, 指数に7bit, 仮数部に24bit使う.
64bit long doubleの場合、符号に1bit, 指数に10bit, 仮数部に53bit使う.

17 条件文 すでに何回か使ったように、if文によって、プログラムの実行を制御できる. if (式) 式が0でないときのみ、文を実行する.

18 条件文(続き) if (式) { } 複数の文を実行したいときは、複数の文を{} で囲う.複合文という.

19 条件文(続き3) if (式) 文1 else 文2 式が0でなければ、文1が、そうでない(式が0)なら、文2が実行される.

20 まとめ 数値型の詳細(表現できる数の範囲)について学んだ 条件文について学んだ

21 レポート課題 問1 16bitで何通りの情報が表現できるか? 問2 同じく4byteで何通りの情報が表現できるか?
別紙資料「浮動小数点数」の問を解け 締め切り:2003年5月6日一杯(日本時間で)


Download ppt "プログラミング演習I 2003年5月7日(第4回) 木村巌."

Similar presentations


Ads by Google