120 likes | 262 Views
プログラミング演習 I. 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 参照
E N D
プログラミング演習I 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の要請)
2の補数表現 • 符号付整数のビット列としての表現法 • 正の整数:単純に2進表現する • 例:0 = (0), 1 = (1), 2 = (10), 3 = (11), …… • nビットでのとき、n-1ビット使える.0~2^(n-1)-1 • 負の整数:すべてのビットの補数を取り(1を0に、0を1にする)、更に1加える • 例:-1→(000…0001)ー[補数]→(111…1110)ー[1加える]→(111…1111) = -1.
2の補数表現(続き) • 負の最大値(100…000)または-2n-1に相当する正の整数は存在しない.この値が負にされても、同じ値になる. • 符号付整数のビット列としての表現には、他に • 1の補数表現 • 符号ビットを独立に持つ表現 • がある.正の整数の表現はどれも同じ.
2の補数表現の補足 • 負の整数:すべてのビットの補数を取り(1を0に、0を1にする)、更に1加える • 例:-1→(000…0001)ー[補数]→(111…1110)ー[1加える]→(111…1111) = -1. • どうしてこれでよいのか? • 1 + (-1) = (000…0001) + (111…1111) = (000…0000) = 0. • ただし、最後の桁上がりは無視する
2の補数表現の補足(続き) • n bitの2の補数表現では、n-1 bit使って、0から2n-1-1を表現 • 負の数-aは、2n – a として表している: • n = 3のとき、-3は、23– 3 = (100) – (011) = (101). 補数表現の求め方と一致している.
2の補数表現の補足(続き2) • 利点:一番上の桁を見ただけで、正負が判断できる. • 一番上の桁が0なら正、1なら負
まとめ • 数値型の詳細(表現できる数の範囲)について学んだ • 負の整数の表現方法として、2の補数表現について学んだ
レポート課題 • 問116bitで何通りの情報が表現できるか? • 問2 同じく4byteで何通りの情報が表現できるか? • 問310bitの2の補数表現で、10進の31, 96, -127, -257の2進表記を与えよ • 締め切り:2004年5月25日一杯(日本時間で) • 提出先:メールで木村(iwao@sci.toyama-u.ac.jp)まで.