データオブジェクトとその変換 - gunma...

24
データオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか そもそも情報とは:複数の可能性の中から一つを指定するもの コンピュータでは二つの状態を取り得るユニットを使って 情報を保持する または (1)情報の対応表(2) ユニット:状態「A」または「B」を取る (リンゴ) (ノート) (バナナ) (鉛筆) 2つの可能性の中から1つを指定する情報:1ビット(情報の基本量) 情報の対応表を変えれば、表現する情報は変わる

Upload: others

Post on 30-Nov-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

データオブジェクトとその変換

データオブジェクトとは:変数と定数値(情報)はどのように表現され変換されるか

そもそも情報とは:複数の可能性の中から一つを指定するものコンピュータでは二つの状態を取り得るユニットを使って情報を保持する

Aまたは

(1)情報の対応表(2)

ユニット:状態「A」または「B」を取る

(リンゴ) (ノート)

(バナナ) (鉛筆)

2つの可能性の中から1つを指定する情報:1ビット(情報の基本量)

情報の対応表を変えれば、表現する情報は変わる

Page 2: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

2つ以上の可能性の場合:複数のユニットを組み合わせる

AA

AB

BB

(リンゴ) (ノート)

(スイカ) (ボールペン)

(ナシ) (消しゴム)

(バナナ) (鉛筆)

2個のユニット(2ビット):4通りの可能性

n個のユニット(nビット):2 通りの可能性n

Page 3: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

ユニットとは具体的には

メモリでは:コンデンサー

A: 電荷なしB: 電荷あり

CPUでは:フリップフロップ

A: 0VB: 3.3V

A: ピット有りB: ピット無し

CDでは:ピット磁気ディスクでは:磁極の向き

A:

B:

NS

NS

SN

NS

SN

SN

ディスク表面

NS

SN

QRコードでは:白黒の区画

A: 黒B: 白

Page 4: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

C言語の基本データ型

(1)符号付整数:2の補数表現

(2)符号なし整数:2進数表現

(3)浮動小数点数:2進の浮動小数点表現

-2 ~2 -1(nー1) (nー1)

nビットの表現範囲:

8ビットならー128~127

8bit (1byte) 16bit (2byte) 32bit (4byte) 64bit (8byte)

8bit (1byte) 16bit (2byte) 32bit (4byte) 64bit (8byte)

0~2-1n

nビットの表現範囲:

8ビットなら0~255

32bit (4byte)64bit (8byte)

128bit (16byte)

最小の絶対値:(float) 1.175494×10 ,(double) 2.225074×10

最大の絶対値:(float) 3.402823×10 ,(double) 1.797693×10 38

-38 -308

308

Page 5: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

(2)符号なし整数の表現(ビットパターンへの割り当て)

AA

AB

BB

1 2 3 0

0 2 0 3

3 3 1 2

2 1 2 1

00

01

11

2ビットの場合、4種類の整数(0,1,2,3)が表現可能。

原理的には様々な割り当てが可能だが、数の場合計算(加減乗除)の効率を考慮する必要がある。

A⇒0,B⇒1と対応付けて、2進数で表現する。

Page 6: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

数の表記法と二進数

(1)一対一対応による記録

(2)数に名前を付けて記録

石 結び目 印

問題:場所を取りすぎ

問題:常に新しい記号(名前)が必要になる

ユニット

A A A B B …

Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ,…,Ⅹ,...,Ⅽ,…,Ⅿ(Ⅹ=10,Ⅽ=100,Ⅿ=1000)

一,二,三,四,…,九,十,…,百,…,千,…,万,…,無量大数(無量大数=10 )

68

数の表記法

Page 7: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

(3)位取り記数法による記録

利点:10個の記号で表記できる0,1,2,3,4,5,6,7,8,9

10個まとまったら桁を上げる(10進法)

25=(10)×2+1×5

Page 8: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

n進数による表記

n進法:n個になったらまとめる(桁を上げる)

10進法

3進法

2進法

1

1

1

1

1

1

1

1

0

0

1

1

2

2

0

0

1

1

10×1 + 1 (2×2×2)×1 +(2×2)×0 + 2×1 + 1

(3×3)×1 + 3×0 + 2

Page 9: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

(2)符号なし整数:2進数表現

8bit (1byte) 16bit (2byte) 32bit (4byte) 64bit (8byte)

0~2-1n

nビットの表現範囲:

8ビットなら0~255

AAAAAAAA 00000000 0(10)

AAAAAAAB 00000001 1(10)

AAAAAABA 00000010 2(10)

AAAAAABB 00000011 3(10)

BBBBBBBA 11111110 126(10)

BBBBBBBB 11111111 127(10)

Page 10: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

(1)符号つき整数の表現

①絶対値表現:最初のビットを符号として0⇒+、1⇒ーとする。②2の補数表現:負数を16の補数(16-|x|)で表す。

0 0 0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1

A⇒0,B⇒1で表記する

+0+1+2+3+4+5+6+7ー0ー1

ー2ー3ー4ー5

ー6

ー7

+0+1+2+3+4+5+6+7ー8ー7

ー6ー5ー4ー3

ー2

ー1

0123456789

10111213

14

15

Page 11: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

2の補数表現の利点:減算器が要らない。

0 0 0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1

+0+1+2+3+4+5+6+7ー8ー7

ー6ー5ー4ー3

ー2

ー1

5+(-3)0101

+110110010⇒0010=3(10)

(-1)+(-4)

1111+110011011⇒1011=-5(10)

(-6)+31010

+00111101⇒1011=-3(10)

アイディア:負数xを、その絶対値|x|を足すと10000(2)(=16(10))になる正数で表す。

その正数は10000(2)に|x|だけ足りない数になる。

ある数と加算すると5桁目の1はオーバーフローでなくなるので、|x|だけ減じられる。

Page 12: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

補数表現の作り方:

0011(1) 1100(2)+ 1

1101

ー3

1101(1) 0010(2)+ 1

0011

ー3

0101(1) 1010(2)+ 1

1011

ー5

1011(1) 0100(2)+ 1

0101

ー5

(1)0と1を反転する(2)1を足す

MSBが1の場合は負数

XXXXXXXX

MSB (Most Significant Bit) LSB (Least Significant Bit)

(足して 1111になる数になる)(足して10000になる数になる)

Page 13: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

10進数でも補数による減算は可能パスカルの計算機(パスカリーヌ)で使用されている

ブーレーズ・パスカルが1640年代に作成した機械式計算機。歯車機構を単純にするため、加算機能しか持たない。

Page 14: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

10進3桁の場合、負数xを、|x|と加えて1000になる正数で表す。

補数表現の作り方:

(1)各桁を足して9になる数に置き換える

(2)1を足す(足して 999になる数になる)(足して1000になる数になる)

125

ー125

125(1) 874(2)+ 1

875

212+(-125)=87

212+8751087 ⇒ 087

125+(-125)=0

125+8751000 ⇒ 000

Page 15: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

(3)浮動小数点数:2進の浮動小数点表現

固定小数点表現 整数と同じ機構で保持できる

3 1 4 1 5 9 2 6

小数点単位量

10倍 1/10倍

1/1000

1 0 0 1 0 1 0 1

小数点単位量

2倍 1/2倍

1/2 = 1/164

問題:値の範囲が狭い

0 0 0 0 0 0 0 03 1 4 1 0 0

0 0 3 1 4 10 0 0 0 0 0 0 0

3.141×109

3.141×10-7

Page 16: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

浮動小数点表現 小数点の位置を指定する

3.141×109

3.141×10-7

0 0 0 0 0 0 0 03 1 4 1 0 0

3 1 4 1 0 0 0 0 0 0 0 0 0 0

+ 7基準位置

3 1 4 1 0 0 0 0

基準位置

0 0 3 1 4 10 0 0 0 0 0 0 0

0 0 0 0 0 0 0

- 7

X X X X X X X X S Y仮数部 指数部

Page 17: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

Float の表現(IEEE 754)

s e f

s:サインビット 1 ⇒―,0 ⇒+e:指数部 8ビット バイアス付き2進表現f:仮数部 23ビット 固定小数点表現 小数点はビット22の左側

ただしe=0, f=0 ⇒値=0e=255, f=0 ⇒値=無限大e=255, f=0以外⇒ NaN(Not a Number)

不正な演算結果など、数でないことを表す。

e - 127 = 01111100(2) - 127 = 124 - 127 = -3, 1.f = 1.01(2) = 1.25

値 = (-1) × 1.25 × 2 = 1.25 × 1/8 = 1.25 ×0.125 = 0.156250 -3

Page 18: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

float vs int:どちらが制度が良い?

float は小数点以下の数も表せるが intは整数部のみ。しかしどちらも 32bit 、2 種類の数しか表せない。

32

仮数部の精度:10進で6~7桁

最小の絶対値:1.175494×10 , 最大の絶対値:3.402823×10 38-38

0 1 2-1-2-2147483648

-2147483647

-2147483646 2147483647

2147483646

2147483645

int

0

1×10-38

2×10-38

-1×10-38

-2×10-38

1.00000×1038

1.00001×1038

-1.00000×1038

-1.00001×1038

1×1033

1×1033

float

Page 19: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

データ型の変換

大から小の整数:同じビットパターンが代入される

unsigned int int

= A B C DA B C D

int si;unsigned int ui;si = -1;ui = si; uiの値は4294967295に

同サイズの整数:同じビットパターンが代入される

(例)

short int= A B C DC D

(例)

Page 20: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

小から大の整数:下位ビットに代入

=int

0/1 0/1 A B

(unsigned) short

A B

(例)

上位ビットは・小が unsigned の場合:符号拡張(AのMSBをコピー)・小が signed の場合:0を代入

=A B A BMSB

1111111111111111 100000000000000000

符号拡張

小が負の場合に大も同じ値

-10(10) = 11111111 11110110 = 11110110(例)16bit 8bit

Page 21: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

0 1 2 3 4 5-1-2-3-4-5

方法1

方法2

浮動小数点数→ 整数正の値:小数点以下切り捨て負の値:大小どちらに切り捨てられるかは機種依存

整数→ 浮動小数点数対応する値がある:整数と同じ値対応する値が無い:規定なし

定数 (リテラル) の表現整数: 10 進表現 (9999),8 進表現 (07777),16 進表現 (0XFFFF) 浮動小数点数: 小数点表現 (999.9),指数表現 (9.99E99)

Page 22: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

文字の表現文字コード(文字の番号)で表す

Page 23: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

int i;i = ’A’;printf(”%d¥n”,i);

何が出力される?

非文字コード:改行( ¥n など)

文字定数による表現(’A’など)

エスケープシーケンス(系列)による表現(教科書46ページ)

¥a 警報音¥b バックスペース¥n 復帰改行¥r 復帰¥f 改ページ¥t 水平タブ¥v 垂直タブ

¥¥ 文字としての¥¥? 文字としての?¥‘ シングルクォーテーション¥“ ダブルクォーテーション¥0 Null(値0の整数)¥ooo 8進数の文字コードを持つ文字¥xhh 16進数の文字コードを持つ文字

Page 24: データオブジェクトとその変換 - Gunma Universityohta/ProgII/02.pdfデータオブジェクトとその変換 データオブジェクトとは:変数と定数 値(情報)はどのように表現され変換されるか

古いコンピュータ

テレタイプ

ASCIIコードで文字を送る

コンピュータの入出力に使える

本来のテレタイプの使い方

ASCIIコードで文字を送る

電話回線