Comments
Description
Transcript
PDF版
プログラミング演習 プログラミング演習II 2004年5月19日(第5回) 理学部数学科・木村巌 ビットとバイト 1bitとは、2進表記一桁で表現できる情報量のこ と 端的にいうと、0か1. 1byteとは、8bitのこと.つまり、0, 1が8桁. (00000000)から、(11111111)まで、256通りの組 み合わせがある キロバイト(KB)、メガバイト(MB)、ギガバイト (GB)、テラバイト(TB) 教科書p.51参照 整数型の詳細 教科書p.49の表3-1参照 int型は、short, 指定なし, longの三種類の大き さと、signed, unsignedの符号の有無の区別が ある. 略記:short intはshort, long intはlongと略記可能 sizeof 演算子……sizeof(型名)で、型が占める メモリの大きさを返す 整数型の大きさ /* sizeofint.c */ #include <stdio.h> int main(void) { printf (“short %d¥nint %d¥nlong %d¥n”, sizeof (short), sizeof (int), sizeof (long)); return 0; } コンパイル・実行してみよう. 整数型の大きさ(続き) 現在の主要な環境では 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の要請) 22の補数表現 の補数表現 符号付整数のビット列としての表現法 正の整数:単純に2進表現する = (0), 1 = (1), 2 = (10), 3 = (11), …… nビットでのとき、n-1ビット使える.0∼2^(n-1)-1 例:0 負の整数:すべてのビットの補数を取り(1を0 に、0を1にする)、更に1加える 例:-1→(000…0001)ー[補数]→(111…1110)ー[1加 える]→(111…1111) = -1. 22の補数表現(続き) の補数表現(続き) 負の最大値(100…000)または-2n-1に相当する 正の整数は存在しない.この値が負にされて も、同じ値になる. 符号付整数のビット列としての表現には、他 に 1の補数表現 符号ビットを独立に持つ表現 がある.正の整数の表現はどれも同じ. 22の補数表現の補足 の補数表現の補足 負の整数:すべてのビットの補数を取り(1を0 に、0を1にする)、更に1加える 例:-1→(000…0001)ー[補数]→(111…1110)ー[1加 える]→(111…1111) = -1. どうしてこれでよいのか? 1 + (-1) = (000…0001) + (111…1111) = (000…0000) = 0. ただし、最後の桁上がりは無視する 22の補数表現の補足(続き) の補数表現の補足(続き) n bitの2の補数表現では、n-1 bit使って、0から 2n-1-1を表現 負の数-aは、2n – a として表している: = 3のとき、-3は、23 – 3 = (100) – (011) = (101). 補 数表現の求め方と一致している. n 22の補数表現の補足(続き2) の補数表現の補足(続き2) 利点:一番上の桁を見ただけで、正負が判断 できる. 一番上の桁が0なら正、1なら負 まとめ 数値型の詳細(表現できる数の範囲)につい て学んだ 負の整数の表現方法として、2の補数表現に ついて学んだ レポート課題 16bitで何通りの情報が表現できるか? 問2 同じく4byteで何通りの情報が表現できる か? 問3 10bitの2の補数表現で、10進の31, 96, 127, -257の2進表記を与えよ 締め切り:2004年5月25日一杯(日本時間で) 提出先:メールで木村([email protected])まで. 問1