Transcript 第2章

第2章 情報の表現
コンピュータの世界において,
どんな情報でも,例えば,数値,文
字,音声,画像など,すべて2進数
で表現されている.
この章では,10進数,2進数,8進数と16進数および
各進数間の変換方法,また,コンピュータのデータとし
て,数値,文字,音声,画像の表現方法について学ぶ.
1
コンピュータとネットワーク概論
第2章 情報の表現
2.1 10進数と2進数,8進数,16進数の記数法
324個のものを10進数で表すことを考えると,下
図のように100(102)位に3個をおき,10(101)位に2
個をおき,1(100)位に4個をおけば,324個のもの
が表現できる.
100(102)位
10(101)位
1(100)位
2
コンピュータとネットワーク概論
第2章 情報の表現
●位取り法
位取り法とは,それぞれの位の数字を用いて数を表現する
方法である.例えば,
324 = 3×102 + 2×101 + 4×100
と表される.小数点の数も,位取り法で表現できる.例えば,
5309.18 = 5×103 + 3×102 + 0×101 + 9×100 + 1×10-1 + 8×10-2
3
コンピュータとネットワーク概論
第2章 情報の表現
● r 進数記数法
一般に任意の数N を
N  an  r n  an1  r n1    a1  r 1  a0  r 0  a1  r 1    am  r m
で表され,r 進数の記数法という.ここに r を基数,ai(0≦ai<r)を
係数と呼ぶ.
■10進数の場合,r =10,ai =0, 1, 2, ……, 9
■ 2進数の場合,r =2,ai =0, 1
■ 8進数の場合,r =8,ai =0, 1, 2, ……, 7
■ 16進数の場合,r =16,ai =0, 1, 2, ……, 9, A, B, C, D, E, F
(16進数について,A,B,C,D,EとFは数字であり,10進数の数
に対応すると,A=10,B=11,C=12,D=13,E=14,F=15)
4
コンピュータとネットワーク概論
第2章 情報の表現
●10進数と2進数,8進数,16進数の加法
■10進数の(7) 10+(8) 10
■2進数の(1101) 2+(1110) 2
1
+ 1
桁上げ → 1 0
1 1 0 1
+ 1 1 1 0
1 1 0 1 1
■16進数の(8) 16+(A) 16 と (A5) 16+(8C) 16
8
+ A
桁上げ → 1 2
A 5
+ 8 C
1 3 1
5
コンピュータとネットワーク概論
第2章 情報の表現
●10進数と2進数,8進数,16進数の関係
10 進数 2進数
0
1
2
3
4
5
6
7
8進数 16 進数 10 進数 2進数
0
1
10
11
100
101
110
111
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
8進数 16 進数
1000
1001
1010
1011
1100
1101
1110
1111
10
11
12
13
14
15
16
17
8
9
A
B
C
D
E
F
(13)10=(1101)2=(15)8=(D)16
6
コンピュータとネットワーク概論
第2章 情報の表現
●ビットとバイト
■2進数において,その数の桁数をビット数(bit)という.2進
数 (10101101)2は8桁からなるので,8ビットの2進数という.
■約定:
1バイト= 1B(byte) = 8ビット
と定義する.(10101110 11100001)2は2バイトのデータである.
■コンピュータにおいて,次の単位がよく使われている.
1KB=1キロバイト=1,024(210)バイト=8192ビット
1MB=1メガバイト=1,048,576(220)バイト=8388608ビット
1GB=1ギガバイト=1,073,741,824(230)バイト
=8589934592ビット
7
コンピュータとネットワーク概論
第2章 情報の表現
2.2 基数の変換
●2進数⇒10進数
与えられた2進数の数を位取りの形式に展開して計算すれば,
10進数の数になる.例えば,
8
コンピュータとネットワーク概論
第2章 情報の表現
●2進数⇒10進数
小数の部分も位取りの形式に展開して変換する.
9
コンピュータとネットワーク概論
第2章 情報の表現
●10進数⇒2進数
10進数の数(135)10 を2進
数に変換する場合,上のよ
うに商が0となるまでに2で
連続割って,最後にその余
りを下から上へ読むと,変
換した2進数(10000111)2 が
得られる.
下
か
ら
上
へ
読
む
よ
う
に
(135)10=(10000111)2
10
コンピュータとネットワーク概論
第2章 情報の表現
●10進数⇒2進数
小数点の数(0.375)10は次のように変換する.
0
0.375×2= 0 .75
1
小数部分のみ ↓
0.75×2= 1 .50
1
小数部分のみ ↓
0.5×2= 1 .00 結果: 011
0となり、誤差なく終了 ↑
よって,誤差が出なく,(0.375)10=(0.011)2となる.
11
コンピュータとネットワーク概論
第2章 情報の表現
●10進数⇒2進数
しかし,(0.35)10の場合,誤差が出る.
0
0.35×2= 0 .7
1
小数部分のみ ↓
0.7×2= 1 .40
0
小数部分のみ ↓
0.40×2= 0 .80 結果: 010
小数点3桁では、誤差が出る ↑
小数点3桁では誤差があり,(0.35)10≒(0.010)2となる.よって,10
進数(小数点数)を2進数に変換するとき、誤差が出ることがある.
12
コンピュータとネットワーク概論
第2章 情報の表現
●2進数⇒8進数(16進数)
整数の場合,2進数の数を最下位から左へ3(4)桁ずつ区切っ
て分ける.最上位が3(4)桁に足りないとき,0を入れる.そして,
その3(4)桁の2進数をそれぞれ8(16)進数に変換する.
( 011 010 111 )2 = ( 327 )8
↓ ↓ ↓
8進数 3
2
7
小数の場合( 11010111.01111 )2 ,小数点より左へと右へそれぞ
れ3桁(16進数の場合4桁)ずつ区切る .
( 011 010 111 . 011 110 )2 = (327.36)8
↓ ↓ ↓ ↓ ↓
8進数 3
2
7 . 3
6
13
コンピュータとネットワーク概論
第2章 情報の表現
●8(16)進数⇒2進数
8(16)進数の数を2進数に変換するとき,それぞれの数字
を3(4)桁の2進数で表せばよい(小数点の部分も同様).ただ
し,位とりの“0”を取り除く.
5
6 . 2
6 )8 = (10101110.01011)2
( 2
↓ ↓ ↓ ↓ ↓
8進数⇒2進数
2進数 010 101 110 . 010 110
)2 2
( 4 A 5 . 2 C )16 =(10010100101.00101100)
↓ ↓ ↓ ↓ ↓
16進数⇒2進数
2進数 0100 1010 0101.0010 1100
14
コンピュータとネットワーク概論
第2章 情報の表現
●8進数⇔16進数
8進数と16進数の変換は,2進数を介して変換を行う.
8進数(16進数) ⇔ 2進数 ⇔ 16進数(8進数)
のように簡単に変換できる.例えば,8進数の数(542)8を16進
数に変換すると,
15
コンピュータとネットワーク概論
第2章 情報の表現
●10進数⇒8(16)進数
8進数と16進数は簡単に2進数に変換できるから,8進数
または16進数を2進数を介して10進数に変換を行う.
例えば,10進数を8進数,16進数に変換するとき,
( 1234 )10=( 10011010010 )2
=( 010 011 010 010 ) 2=(2322)8
=( 0100 1101 0010 ) 2=(4D2)16
16
コンピュータとネットワーク概論
第2章 情報の表現
2.3 数値データの表現(整数)
コンピュータの世界で扱われる数値は大きく次のように分
けることができる.
正の整数
整数
数値データ
負の整数
実数(有限桁数の小数)
整数の表現法には,■固定小数点形式,■2進化10進数
ゾーン形式と■2進化10進数パック形式という3種類がある.
実数の表現法には,■浮動小数点形式がある.
17
コンピュータとネットワーク概論
第2章 情報の表現
●固定小数点形式
整数には正の整数と負の整数がある.nビットの2進数を
用いて,整数を表現する場合,下図のように最上位のビット
bn-1 を符号ビットとし,bn-1 =0のとき正の整数を表し,bn-1 =1
のとき負の整数を表す.
bn-1
bn-2
……
b1
b0
符号ビット
18
コンピュータとネットワーク概論
第2章 情報の表現
正と負の整数の固定小数点形式
●正の整数の場合,単に2進数で表現する.
例:(+5)10を4ビットと8ビットの固定小数点形式で表現すると,
( +5 )10=( 0101 )2
( +5 )10=(00000101 )2
●負の整数の場合,2の補数で表現する.
19
コンピュータとネットワーク概論
第2章 情報の表現
●2の補数の求め方
2の補数とは,nビットの2進数aに対して,nビットの2進数a’
があり,a と a’ の和はオーバフローにより,nビットの数が全部0
となる.このとき, a とa’は互いに2の補数という.例えば,4ビッ
トの( 0100 )2の2の補数は( 1100 )2となる.
0100
 1100
1 0000
オーバフロー
aの2の補数の求め方(反転して,プラス1):
● aの各ビットを全て反転する(1→0,0→1).
●それに1を加える.
4ビット
0100 反転

1011 +1

 1100
0100と 1100は互いに 2の補数である
20
コンピュータとネットワーク概論
第2章 情報の表現
【例題2.1】 (-98 )10を8ビットの固定小数点形式で表現せよ.
[解答]:まず,8ビットで( 98 )10を2進数に変換する.
次に,( 01100010 )2 の2の補数を求める.
01100010 反転

10011101 +1

 10011110
よって,(-98)10を固定小数点形式で表すと,次のようになる.
(-98 )10=( 10011110 )2
21
コンピュータとネットワーク概論
第2章 情報の表現
●固定小数点形式の性質
n ビットの固定小数点形式では,表現できる整数の範囲は
 2 n 1 ~2 n 1  1
である.コンピュータは,一般に整数を16ビットで表現している.
つまり,表現できる整数の範囲は
-32768 ( 215 ) ~32767( 215-1)
となる.この範囲を超える場合,ビット数を長くする必要がある.
4ビットの場合,表せる範囲は-8~+7である(表2.2を参照)
22
コンピュータとネットワーク概論
第2章 情報の表現
●固定小数点形式のメリット
コンピュータの基本的な計算機能は加算である.どんな
複雑な計算でも加算に変換して計算できる.
固定小数点形式を用いることにより,負の数を2の補数
で表現するから,a-b=a+(-b)のように減算を加算で計
算することができる.
例えば,4ビットを用いて, (7) 10-(5) 10 を
計算する場合,(-5 )10は( 1011 )2となり,
(7) 10-(5) 10=(7) 10+(-5) 10=(0111) 2+
(1011) 2=(0010) 2のように加算で減算する
オーバフロー
(オーバフローは巧みに利用される).
0111
 1011
1 0010
23
コンピュータとネットワーク概論
第2章 情報の表現
●2進化10進数ゾーン形式
10進数の数を下記の対応で4ビットの2進数で表す方法を
2進化10進数ゾーン法という.
4ビット
4ビット
4ビット
4ビット
……
4ビット
4ビット
ゾーン部
数字
ゾーン部
数字
……
符号部
数字
ASCIIコード場合
10進数
2進数
0
1
正 1100
0011
2
負 1101
3
4
5
6
7
8
9
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
例:  24710  0011 0010 0011 0100 1101 01112  3234D716
ASCIIコードの2である.表2.4
コンピュータとネットワーク概論
24
第2章 情報の表現
●2進化10進数パック形式
10進数の数を下記の対応で4ビットの2進数で表す方法を
2進化10進数パック法という.
10進数
2進数
例:
4ビット
4ビット
……
4ビット
4ビット
数字
数字
……
数字
符号部
0
1
2
0000 0001 0010
 24710  0010
……
8
9
正
1100
……
1000
1001
負
1101
0100 011111012  247D16
25
コンピュータとネットワーク概論
第2章 情報の表現
●2進化10進数法の特徴
2進化10進数法は,固定小数点形式に比べて,同じビット
数で表現できる整数の範囲は狭い.しかも計算時間もかか
る.しかし,10進数の数を2進数で表すには便利である.特
に,次に紹介するASCIIコードとなるので,そのまま数値デー
タとして使える.
よって,数字の文字列データと数値データの高速変換が
可能である.
26
コンピュータとネットワーク概論
第2章 情報の表現
2.3 数値データの表現(実数)
コンピュータの世界では,実数を浮動小数点形式で表現
する.例えば,
874.345=874345×10-3=8.74345×102
のようになっている.指数の大きさを変えれば,小数点の位
置が浮動するから,浮動小数点法と呼ばれている.一般に
実数を
 ar
b
で表す.aを仮数,bを指数,rを基数という.
27
コンピュータとネットワーク概論
第2章 情報の表現
浮動小数点形式について
一般的に(単精度の場合),実数を下図のように4バイト
(32ビット)で表現し,3つの部分に分けられている.
符号部 S
指数部 E
仮数部 F
1ビット
8ビット
23ビット
●符号部S: 実数の正負を示す.正:S=0,負:S=1
●指数部E:正規化した場合の指数部分である.
●仮数部F:正規化した場合の仮数部分である.
28
コンピュータとネットワーク概論
第2章 情報の表現
●正規化について
正規化とは,アメリカのIEEE(電気電子学会)により定めら
れた浮動小数点表示の規格のことである.この規格により,
指数部と仮数部を次のように表現する.
N  (1. a1a2 a3 a4
……

a
m)2
b
ai は2進数の数とし,bは8ビットの整数(固定小数点形式)
である.IEEE規格では,指数部分E=b + (01111111)2(バイア
ス表示という)の2進数を記入する.仮数部分Fにa1 a2 a3
a4……amを記入する(左詰め記入,後ろに23ビットまで0で詰
める).
29
コンピュータとネットワーク概論
第2章 情報の表現
【例題2.3】 (-111011.101)2 をIEEE規格の単精度
浮動小数点形式で表せ.
[解答]:まず,(-111011.101)2を正規化した2進数で表すと,
 1111011.1012  (1.111011101) 2  2 6
2  2 00000110
 1.111011101
となる.負の数であるので,符号部(1ビット)S=1となる.仮数部
(23ビット)F=11101110100000000000000で,指数部(8ビット)は
E=(00000110)2 + (01111111)2=(10000101)2となる.すなわち,
(-111011.101)2は,次のように表現されている.
(1100 0010 1111 0111 0100 0000 0000 0000)2=(C2F74000)16
30
コンピュータとネットワーク概論
第2章 情報の表現
浮動小数点形式法の性質
IEEE規格の浮動小数点形式
31
コンピュータとネットワーク概論
第2章 情報の表現
2.4 文字データの表現
文字情報(数字,アルファベット,記号,ひらがな,カタカナ,
漢字など)をある一定体系に基づく2進数の“0”と“1”で表現し
たものをコード(code)という.
英数字にはASCIIコードなどがある.
日本語にはJISコード,シフトJISコードとEUCコードなどがある.
32
コンピュータとネットワーク概論
第2章 情報の表現
●ASCII(アスキー)コードについて
英数字は大文字,小文字,記号など全部で100種類を超えな
い.そこで,8ビット(1バイト)で全ての英数文字が表現できる
(28=256種類).
ASCIIコードとは,American Standard Code for Information
Interchangeの略で,1バイトを使っているが,実際には下図のよ
うに7ビットしか使われていない.
33
コンピュータとネットワーク概論
第2章 情報の表現
上位 3 ビット
000
001
010
011 100
100
101
110
111
下位 4 ビット
(0)16
(1)16
(2)16
(3)16
(4)16
(5)16 (6)16
(7)16
0000
(0)16
NUL
DLE
SP
0
@
P
`
p
0001
0001
(1)16
SOH
DC1
!
1
A
Q
a
q
0010
(2)16
STX
DC2
"
2
B
R
b
r
「A」は,
0011
(3)16
ETX
DC3
#
3
C
S
c
s
0100
(4)16
EOT
DC4
$
4
D
T
d
t
(100 0001)2
0101
(5)16
ENQ
NAC
%
5
E
U
e
u
0110
=(41)16
(6)16
ACK
SYN
&
6
F
V
f
v
0111
(7)16
BEL
ETB
'
7
G
W
g
w
1000
(8)16
BS
CAN
(
8
H
X
h
x
「I like computer.」
1001
(9)16
HT
EM
)
9
I
Y
i
y
1010
(A)16
LF/NL
SUB
*
:
J
Z
j
z
(49 20 6C 69 6B 65 20 63
6F 6D 70 75 74 65 72 2E)16
1011
(B)16
VT
ESC
+
;
K
[
k
{
1100
(C)16
FF
FS
,
<
L
¥
l
|
1101
(D)16
CR
GS
-
=
M
]
m
}
1110
(E)16
SO
RS
.
>
N
^
n
~
1111
(F)16
SI
US
/
?
O
_
o
●ASCIIコード
スペースは20である.
コンピュータとネットワーク概論
第2章 情報の表現
34
DEL
●日本語文字の表現
日本語では,アルファベットと数字以外にひらがな,カタカナ
と漢字もある.漢字だけでも数千個以上あるため,1バイトで
は表現できない.したがって,日本語の文字は2バイト(16ビッ
トを用いて表現する.よって, 216=65,536種類の文字が表現
できる.
日本語の文字を表現するコードはJIS(日本工業規格)に規
定されている.「JISコード」,「シフトJIS」と「EUC」などが挙げら
れる.これらは一般に「文字コード」と呼ばれている.
35
コンピュータとネットワーク概論
第2章 情報の表現
●日本語文字コードの構成
文字コードは,実際には「文字集合」と「符号化方式」という要
素から成り立っている.
文字集合は,JIS X 0213(区点コードともいう)(11,223個文字)
符号化方式は,JIS X 0202(ISO 2022)
JISコ ード
JIS漢字コ ード
JIS X 0213
エンコーディング
符号化方式によ る
JIS X 0202
SJISコ ード
EUCコ ード
36
コンピュータとネットワーク概論
第2章 情報の表現
●句点コードとJISコードの関係
区点コードでは,漢字の読みの
五十音順に配列されている.例
えば,「愛」の句点コードは1606
(区番号:16,点番号:06)である.
37
コンピュータとネットワーク概論
第2章 情報の表現
●ユニコードについて
最近,Unicode(ユニコードという)がパソコンに導入されて
いる.Unicodeはアメリカのコンピュータ・メーカー連合により
作られた16ビットのコードである.Unicodeは,コンピュータ
の機種に係わらず,すべての文字に独立した番号を与えて
いる.複数の言語,複数の国をカバーすることができる.特
にデータを多くの異なるシステムの間に,何の乱れもなしに
転送することが可能である.
Unicodeは2バイト方式によるもので,65,536文字を割り当
てることができる.この中に約2万個の日本語,中国語,韓
国語の漢字が含まれる.各国で用いられている漢字コード
から重複する文字を統合している.
38
コンピュータとネットワーク概論
第2章 情報の表現
2.5 音声データの表現
音声は右図のようなアナロ
グ信号である.すなわち,時
間に対して音声の変化が連
続である.
電圧
アナログ音声信号
t
コンピュータはアナログ信
号が扱えないため,アナログ
音声信号をディジタル信号
に変換しなければならない.
2進数のディジタル信号
01101111
10110101
11001101
……
00110100
39
コンピュータとネットワーク概論
第2章 情報の表現
●アナログ信号⇒デジタル信号へ
電圧
電圧
アナログ音声信号
標本化データ
標本化
t
(サンプリング)
量
子
化
t
電圧
量子化
2進数のディジタル信号
01101111
10110101
11001101
……
00110100
デジタル化
t
40
コンピュータとネットワーク概論
第2章 情報の表現
●標本化について
1秒間に標本化されたデータの数をサンプリング周波数とい
う.シャノンの理論により,サンプリング周波数が音声の最高
周波数の2倍より大きいならば復元できる.サンプリング周波
数が高ければ,復元した音声の品質が保持できるが,標本
化データも多くなる.
電話品質程度: 11025Hz (1秒間11025個のデータを取る)
中程度の品質: 22050Hz (コンピュータの標準として)
高品質,楽音: 44100Hz (CD, DVDなどに用いる)
41
コンピュータとネットワーク概論
第2章 情報の表現
●量子化とデジタル化について
標本化されたデータをディジタル量にすることを量子化とい
う.また,そのデータを何段階の数値で表現するかを示す値
を量子ビット数と呼ぶ.
量子化ビット数が8ビットの場合は,得られた標本化データ
を0~255の256段階の数値で表現することができる.16ビット
になると,0~65535の65536段階で表現するため,8ビットの
場合よりも細かい違いを表現できる.
高品質の音楽などをディジタル信号に変換するためには
16ビット必要になる.
42
コンピュータとネットワーク概論
第2章 情報の表現
●音声の情報量の計算例
例えば,サンプリング周波数44100Hzでの標本化データを16ビット
で量子化する場合は,1秒当たり(簡単に1KB=1000Bとする)
44100(データ/s)×16(bit)=705600(bit/s)/(8×1000)≒88(KB/s)
1時間の音声データは(1MB=1000KBとする)
88(KB/s)×3600(s)≒317(MB)
となる.量子化された数値を2進数に変換すれば,ディジタル信号
化は完了となる.
43
コンピュータとネットワーク概論
第2章 情報の表現
2.6 画像データの表現
dot または pixelという
画像は右図のようにフレームの中で点
の集まりで構成される.この点のことを
画素,ドット(dot)またはピクセル(pixel)
という.
右図は16×16(256)個の画素からなる.
1インチの長さに存在する画素数を解像
度といい,dpi(dpi=dots per inch)または
ppi(ppi=pixels per inch)で表される.こ
の値が大きいほど画質が良くなる.
44
コンピュータとネットワーク概論
第2章 情報の表現
●画像の構成
画像はドットからなる
45
コンピュータとネットワーク概論
第2章 情報の表現
●三原色の表現
フルカラー画像のドット(画素)の色は,三原色の赤(red),
緑(green)と青(blue)の濃淡を組み合わせて表示されている.
これを,RGB表示という.各画素の色は,それぞれの濃さを8
ビットで256の諧調で表し,0のときは一番薄い,255のときは
一番濃いということになる.つまり,各色の濃さは2桁の16進
数で (r1r2g1g2b1b2)16で指定される.
388551
R:72G132B:81
?
46
コンピュータとネットワーク概論
第2章 情報の表現
●画像の情報量と計算例
1色につき8ビットであるので,1つのドット(画素)の色を表
現するのに3×8=24ビット(3バイト)のデータが必要となる.
24ビットで各画素につき,約1677万色が表現できる.
画素数1024×768(横×縦)ドットの画像について,各画素
を24ビットで表すとすると,1枚の静止画像のデータ量は
1024×768×24=18,874,368(bit)≒2.3 MB
となる.
47
コンピュータとネットワーク概論
第2章 情報の表現
●解像度の計算例
画素数1024×768(横×縦)ドットの画像を17インチのコン
ピュータ画面で表すと,解像度は次のように求められる.
768
ドット
17インチ
1024ドット
対角線上の1インチに当たるドットが求
められるので,この画面の解像度は
10242  7682
解像度=
≒75dpi
17
dpi: dots per inch(1インチに当たるドット数)
48
コンピュータとネットワーク概論
第2章 情報の表現
●動画の情報量と計算例
動画の場合は,1秒間に24枚(フレームという)以上の画
像をスライドショーのようにすると連続の動画に見える.動
画にすると,データ量がさらに大きくなる.例えば,
1024×768ドットの画像を1秒間30枚(コンピュータの規格)
用いる動画では,1秒間に,
2.3 MB(bit/frame)×30(frame/s)≒ 69(MB/s)
のデータが必要になる.1時間の動画データなら,
69(MB/s)×3600(s)≒ 248 GB
となる.
49
コンピュータとネットワーク概論
第2章 情報の表現
第2章のまとめ
1.コンピュータには2進数が使われている.
●2進数と10進数の変換
●2進数と8進数,16進数の関係
2.数値データの表現
●整数の表現法には,固定小数点形式法, 2進化10進数
ゾーン形式法と2進化10進数パック形式法がある.
●実数の表現法には,浮動小数点法がある.浮動小数点
法は符号部,指数部と仮数部からなる.
50
コンピュータとネットワーク概論
第2章 情報の表現
第2章のまとめ
完
3.文字データの表現
●英数字には,ASCIIコードなどがある.●漢字には
JISコード,シフトJISコードとEUCコードなどがある.
4.音声データの表現
●アナログ信号とディジタル信号 ●標本化と量子化
5.画像データの表現
●画像はドット(画素)からなる ●フルカラー画像の画
素は三原色の濃淡を組み合わせて表示する ●解像度,
静止画像と動画
51
コンピュータとネットワーク概論
第2章 情報の表現