A régi (de nem ókori) órákon gyakran a négyet IIII formában, de a kilencet IX formában írták, aminek a lehetséges okairól (jobban néz ki, öntéstechnikai okok) lehet olvasni az interneten.
1.1. Számok értelmezése
1
Tízes számrendszerbeli szám értelmezése Számjegyek: 0,
1,
2,
3,
4,
5,
6,
7,
8,
9
975,310 Helyiérték súlya
102
101
100
10−1
Helyiérték neve
százasok
tizesek
egyesek
tizedesek
Számjegy Számjegy
·
súly
9
7
5
3
9 · 102
7 · 101
5 · 100
3 · 10−1
900
70
5
0,3
Tényleges érték
Kettes számrendszerbeli szám értelmezése Számjegyek: 0,
1
101,12 Helyiérték súlya
22
21
20
2−1
Helyiérték neve
négyesek
kettesek
egyesek
felesek
Számjegy Számjegy
·
súly
Tényleges érték
1
0
1
1
1 · 22
0 · 21
1 · 20
1 · 2−1
0
1
0,5
4
Teljes szám tényleges értéke
4+0+1+0,5=5,5
Tizenhatos számrendszerbeli szám értelmezése Számjegyek: 0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
A,
B,
C,
D,
E,
F
17F,816 162
Helyiérték súlya Számjegy Számjegy
·
súly
Tényleges érték
161
160
16−1
1
7
F
8
1 · 162
7 · 161
15 · 160
8 · 16−1
256
112
15
0,5
Teljes szám tényleges értéke
256+112+15+0,5=383,5
Az informatikában használt számrendszerek alap
számjegyek
írásmód
kettes
bináris
R=2
0, 1
0b 00001111
nyolcas
oktális
R=8
07
017
tizenhatos
hexadecimális
R=16
015 (0F)
0x 0F
tizes
decimális
R=10
09
15
Az írásmódnál a programnyelvekben használatos gyakori írásmódot tüntettük fel, minden esetben a 15 példáján. Ha egy szám 0-val kezd®dik, akkor sok programnyelv nem tizeskén számrendszerben értelmezi.
Ha 0x-szel kezd®dik hexadedimálisnak, ha 0b-vel akkor binárisnak, ha 0-val
2
de nem az el®z®ekkel, akkor oktálisnak. A hexadecimálisban a kisbet¶k is megengedettek legtöbb programnyelvben. Kipróbálhatják Pythonban, ahogy órán tettük, egyszer¶en telepíthet® Windows alá is, Linux telepítésekben általában benne van, de az ipython csomagot érdemes telepíteni és ipython-t futtatni parancssorban. Windows alatt az IDLE nev¶ grakus fejleszt®i felületet érdemes elindítani. Biztosan használható ez az írásmód a következ® programnyelvekben: C, C++, Python C#-ban nincs ilyen, a
128
számot így lehet kezelni:
int i = Convert.ToInt32("12", 8);
Ha az alap 2 hatványa, az átváltás viszonylag egyszer¶: 3 1
1
2 0
1
0
D
1
0
5
nyolcas
1
kettes
5
tizenhatos
Miért keveri az amerikai informatikus a Halloweent a Karácsonnyal? ugyanaz mint Dec... (1-je Mindenszentek napja (All Hallow's Day), 31-e Mindenszentek estéje (All Hallow's Eve), 2-a halottak napja.)
PNG-ábra hexadecimális nézetben
3
Mert szerinte Oct 31
1.2. Egész számok bináris ábrázolása Legnagyobb el®jel nélküli n bites szám 8 biten ábrázoljunk egész számot el®jel nélkül. Melyik a legnagyobb?
1111 11112 adjunk hozzá egyet
1 0000 00002 = 28
(túlcsordulás, nem fér 8 bitre)
8 bites számnál a legnagyobb egész szám:
2n
általában n bites számnál:
− 1.
Egész számok bináris ábrázolása 2n−1
...
1
1
0
n
1
0
1
0
28 − 1 = 255,
20 1
1
...
MSB
LSB
LSB: less signicant bit, legkevésbé jelent®s bit MSB: most signicant bit, legjelent®sebb bit
A legnagyobb ábrázolható el®jel nélküli szám:
2n − 1.
Ha az MSB az el®jelbit, akkor az ábrázolható legnagyobb szám: a legkisebb szám:
+2n−1 − 1, −2n−1 .
El®jeles számok pozitív számok 50
0
50
25
1
25
12
0
12
6
0
6
3
1
3
1
1
1
= 2 · 25 = 2 · 12 =2·6 =2·3 =2·1 =2·0
+0 +1 +0 +0 +1 +1
0
•
Kettes osztás maradékát írjuk fel, amíg nulla nem lesz a hányados.
•
Csak az els® két oszlopot írjuk le.
•
Alulról felfelé írjuk le a maradékokat. Ha kevés a számjegy, az elejét nullákkal b®víthetjük pl. 8 bitre.
• 50 = 1100102 = 001100102 4
El®jeles számok negatív számok • +50 = 001100102 •
(nyolc biten)
Abszolutértékes: csak a legels® bitet, az el®jelbitet változtatom.
−50 = 101100102,a •
Egyes komplemens: Az összes számjegyet ellentettjére változtatom.
−50 = 110011012,1k Ilyenkor van egy −0 = 111111112 • Kettes komplemens: −50 = 110011012,2k
Az egyes komplemens
+1
Ebben az összeadás ugyanúgy megy, mint az el®jel nélkülieknél!
• Eltolásos:
Gyakran használt.
A számokhoz valamennyit hozzáadunk, hogy mindig pozitív legyen, és a pozitív
számot a szokott módon ábrázolom. Az eltolásos rendszerben könny¶ két szám összehasonlítása (<,
>), ezért a lebeg®pontos számok
kitev®jénél alkalmazzák.
Feladatok •
Írjuk fel a 111 számot kettes és tizenhatos számrendszerben.
•
Írjuk fel a
−66
el®jeles számot kettes számrendszerben egyes és kettes komplemensként, vala-
mint 127-es eltolással.
•
Írjuk fel az
ABBA16
•
Írjuk fel az
2EF, 816
számot kettes, tizes és nyolcas számrendszerben. számot tizes számrendszerben.
−10, egyes komplemenssel 8 biten 10
0
5
1
2
0
1
1
0
• 10 = 000010102 •
(8 bitre kiegészítve)
Egyes komplemens: 0-ásokat 1-esekre cserélem és viszont
• −10 = 111101012,1k
5
−24, kettes komplemenssel 8 biten 24
0
12
0
6
0
3
1
1
1
0
• 24 = 000110002 •
(8 bitre kiegészítve)
Egyes komplemens: 0-ásokat 1-esekre cserélem és viszont
• −24 = 111001112,1k •
Kettes komplemens: az egyes komplemeshez egyet adok: az utolsó 1-esek 0-ává, az el®ttük álló 0-ás 1-essé alakul.
Írjuk fel a 10 bites kettes komplemenssel kódolt legnagyobb és legkisebb ábrázolható számot kettes komplemens ábrázolásban valamint tizes számrendszerben!
•
Melyik számot ábrázolja a következ® lebeg®pontos szám? A karakterisztikát (a kitev®t) 8 bit ábrázolja többletes el®jeles kódolással 127 többlettel, a többinek a sorrendje azonos az órán bemutatottal. 1
−32768 ≤ x ≤ 32767 −2 · 109 ≤ x ≤ 2 · 109 −9 · 1018 ≤ x ≤ 9 · 1018
packed decimal
80
−999999999999999999 ≤ x ≤ 999999999999999999
short real
32
long real
64
temporary real
80
8,43 · 10−37 ≤ x ≤ 3,37 · 1038 4,19 · 10−307 ≤ x ≤ 1,67 · 10308 3,4 · 10−4932 ≤ x ≤ 1,2 · 104932
word integer
16
short integer
32
1/3 = 0.33333333333333331 (bináris szám) 1/3 = 0.33333333333333333 (binárisan kódolt decimális) Nem kell tudni a fenti összes adattípust és a pontos tartományt, de feltétlenül tudni kell, hogy milyen egyesület szabványában van benne, és hogy egészb®l és lebeg®pontosból (real = valós) is többféle van. A bájt (jele B, angolul byte) a számítástechnika elterjedt alapegysége, 8 bitet foglal magában. Hány hexadecimális számjeggyel írható fel? 2-vel, pl.
0011 10102 = 3A16
Figyeljük meg továbbá, hogy mindegyik fenti számformátum egész számú bájtot foglal el. Ez így lesz a karakterkódoknál is. A packed decimal formátumban a számjegyek 10-es számrendszerben kódoltak, minden számjegyet 4 bit kódol. Ezt hívják binárisan kódolt decimálisnak (BCD).
2009 =?BCD 0010 0000 0000 1001BCD ,
ugyanaz mint a
200916
9
2. Karakterek ábrázolása
EBCDIC (1950-)
ASCII (1963-)
Extended Binary Coded Decimal Interchange Format
American Standard Code for Information and Interchange
0
1
2
3
4
5
6
7
0
NUL
DLE
SP
0
@
1
SOH
DC1
!
1
A
P
`
p
Q
a
2
STX
DC2
"
2
B
R
b
q r
3
ETX
DC3
#
3
C
S
c
s
4
EOT
DC4
$
4
D
T
d
t
5
ENQ
NAK
%
5
E
U
e
u
6
ACK
SYN
&
6
F
V
f
v
7
BEL
ETB
'
7
G
W
g
w
Q: 0x51
8
BS
CAN
(
8
H
X
h
x
9: 0x39
9
HT
EM
)
9
I
Y
i
y
szóköz: 0x20
A
LF
SUB
*
:
J
Z
j
z
WALL: 0x57414C4C
{ | }
B
VT
ESC
+
;
K
[
k
C
FF
FS
,
<
L
\
l
D
CR
GS
−
=
M
]
m
E
SO
RS
.
>
N
^
n
~
F
SI
US
/
?
O
__
o
DEL
A karakterek hexadeximális kódja leolvasható a ASCII-táblából. Felül található az els® hexadecimális számjegy, balra a második. A H bet¶ kódja például
4816 = 0x48 = 0100 10002 .
Az ASCII
tábla els® két oszlopában (0x000x2F) vezérl® karakterek szerepelnek (HT=(horizontális) tabulátor, CR=sor elejére (kocsi vissza), LF=soremelés, BEL=hangjelzés). A második oszloppár (0x200x3F)
10
tartalmazza a számokat és egyéb jeleket, például a szóközt (SP) is.
A harmadik oszloppárban
(0x400x5A) találhatóak a nagybet¶k, a negyedikben a kicsik (0x600x7A).
Más nyelvekhez más kódlap •
Az ASCII kódtáblát kiegészítették 8 bitre, amelyben pár ékezetes bet¶ is helyt kapott
•
ISO; DOS; Windows; Mac OS szabványok
•
ISO-8859-1
=
Latin-1
≈
8-bites ASCII
≈
Windows-1252
Nyugat-Európai (û, õ)
•
ISO-8859-2
=
Latin-2
Közép-Európai (¶, ®)
UNICODE •
Minden két bájtos számhoz egy karakter tartozik
•
tehát 4 hexadecimális számjeggyel írható le egy karakter kódja.
•
Els® 256 helyen a Latin-1-es kódlap
•
Többféle kódrendszer
•
a két bájtot általában változó hosszúságú kóddá alakítják, a gyakori karaktereket pl. 1 bájttal, a ritkákat 4 bájttal kódolják
•
UTF-8 elterjed®ben: egy, két és négybájtos karakterek, Latin-1-es kódlapú azonos UTF-8-ban is.
•
mindenféle írásjel (japán, kínai gondok)
•
matematikai, biológiai, csillagászati. . . jelek
3. Képek és ábrázolásuk
Képek ábrázolási módja •
vektorgrakus: objektumokból áll, melyeknek bizonyos tulajdonságait adjuk meg
•
rasztergrakus (=bittérképes=pixelgrakus): pixelenként leírja annak szín-fényesség-átlátszóság adatait
3.1. Vektorgrakus ábrák
11
Vektorgrakus ábrák •
Objektumokból áll a kép (pl. téglalapok, ellipszisek, sokszögek)
•
Ezeket az objektumokat nem képpontokként, hanem adataikkal tárolják a vektorgrakus fájlformátumok, tehát újból megnyitva a fájlt az egyes objektumok jellemz®i külön szerkeszthet®ek, vagy akár törölhet® egy objektum.
•
Egy kör megadása például a következ® adatokkal történhet: középpont koordinátái, sugár, vonalvastagság, körvonal színe, kitöltés színe, vonaltípus (pl. szaggatott), átlátszóság.
•
Egy szöveg megadása például a következ® adatokkal történhet:
a szöveg, a szöveg helye,
bet¶család (Arial), stílus (döntött, vastag), méret (12 pontos), szín, átlátszóság.
Vektorgrakus ábrák, görbe vonalak •
A görbéket is matematikai módszerekkel, általában Bézier-görbékkel írja le.
•
Pierre Bézier, a francia mérnök 1962-ben a Renault számára készített számítógépes tervez® rendszerekhez (CAD) használta a róla elnevezett görbét
•
Megadható vele a görbe kezd® és végpontjában milyen legyen az érint®je, és mennyire görbüljön.
•
Az alábbi görbéhez például 4 pont megadása szükséges: a kezd® és végpont, valamint két úgynevezett kontrollpont (P és
Q)
koordinátája.
P Q
Vektorgrakus ábrák jellemz®i •
Geometriai alakzatokból álló ábrák tárolására megfelel® pl. grakonok
•
Végtelenségig nagyítható min®ségromlás nélkül
•
A kép bájtban mért mérete csak a megadandó adatok mennyiségét®l függ, a négyzetcentiméterben mért mérett®l nem.
12
Vektorgrakus formátumok és szerkeszt®k SVG
•
SVG (Scalable Vector Graphics) képformátum,
•
a World Wide Web Consortium (W3C, a web szabványait felügyel® szervezet) szabványa, hivatalos webes képformátum.
•
Egy (általában UTF-8 kódolású) szöveges formátumban, az úgynevezett XML formátumban tárolódik.
•
Az XML az weboldalak leírására alkalmas HTML formátum közeli rokona.
•
Az SVG pl. az Inkscape szabad szoftverrel szerkeszthet®.
Egyszer¶sített példa SVG-re <svg>
13
Az el®z® fájlhoz tartozó ábra
Vektorgrakus formátumok és szerkeszt®k Továbbiak
•
PostScript és PDF, sok grakonrajzoló vagy vektorgrakus szerkeszt®program képes ilyen formátumokba menteni (MATLAB, Pylab, Inkscape)
•
A PostScript nyelvet komolyabb nyomtatók ismerik. Szöveges formátum. Els®sorban dokumentumleíró nyelv. Ábrák tárolására alkalmas változatának a kiterjesztése .eps.
•
A PDF (Portable Document Format) szintén dokumentumleíró nyelv, de vektorgrakus ábrák is tárolhatók ebben a formátumban. Elektronikuskönyv-olvasók támogatott formátuma. Kisebb, mint a PostScript, mert tömörítést alkalmaz.
•
Kereskedelmi szoftverek és képformátumaik: pl. Corel Draw (.CDR)
3.2. Rasztergrakus ábrák Rasztergrakus ábrák •
A képet mátrix-szer¶en elrendezett képpontokból, un.
14
pixelekb®l építik fel
•
Pixelenként megadható mondjuk az egyes színek er®ssége (RGB=vörös, zöld, kék), és az átlátszóság
•
vagy hogy egy adott színpalettából hányadik színt veszem
•
gyakran tömörített formátumokat használnak, a tárfoglalás miatt
Rasztergrakus ábrák Színpalettás ábrázolás
A színpalettás ábrázolásnál egy színlistát hoznak létre, és a listában elfoglalt sorszámmal azonosítják a színeket az egyes pixelek esetén. A listában használhatnak pl. RGB-összetev®ket az egyes színek megadására, de az egyes pixeleknél már csak a szín sorszámát adják meg. Az ábrán négyféle színt használnak, tehát egy képpont színe 2 biten eltárolható. 8 bit esetén 256 féle szín használható.
n bit esetén 2n
bit.
Veszteséges és veszteségmentes tömörítés •
Veszteségmentes tömörítés: az összes képpont adata pontosan helyreállítható pl.
PNG, és
GIF
•
Veszteséges tömörítés: kihasználja a látás törvényszer¶ségeit nom színátmenet¶ képeknél, pl. fotóknál szabad szemmel nem lehet észrevenni különbséget pl. JPEG
15
Fontos A vektorgrakus és a pixelgrakus formátum között nincs olyan, amelyik minden szempontból jobb lenne a másiknál. Van amelyik egyik szempontból jobb, vam amelyik másik szempontból. Például geometriai alakzatokból álló kép esetén általában a vektorgrakus formátum a jobb, fényképek esetén pedig általában a rasztergrakus (azon belül is a veszteséges tömörítés¶ JPEG).
3.3. Színek, felbontások Színek megadása RGB Az emberi szem háromféle szín érzékelésére alkalmas receptorokkal, az úgynevezett csapokkal rendelkezik. Ennek megfelel®en a vörös, zöld és kék összetev®k fényességének megadása elegend® ahhoz, hogy egy színt el®állítsunk. Az alapszínek angol kezd®bet¶ib®l RGB-összetev®knek is nevezzük ezeket. Tároláskor gyakran egy színt két hexadecimális számjeggyel jellemezzük:
#00FF00
jelentése R-b®l 0, G-b®l 0xFF=255, B-b®l 0. Tehát ez tiszta zöld színt jelent.
Kérdések •
Mit használnánk egy fénykép közzétételére weben?
•
Mit használnánk egy grakon közzétételére weben?
•
Mit használnánk egy dokumentum közzétételére web-en, ha fontos, hogy különböz® operációs rendszereken is ugyanúgy nézzen ki?
•
Adjunk példát egy zöld szín hexa kódjára!
•
Adjunk példát egy szürke szín hexa kódjára!
•
Mi a fekete és a fehér hexa kódja?
16
Melyik képeket lehet érdemes vektorgrakusan tárolni?
Színjelölések az SVG-ben (és HTML-ben, CSS-ben) Az #00A200 kódú szín zöld színezet¶.
Ez a szín másképpen rgb(0,162,0).
A016 = 10 · 16 + 2 = 162,
mert az A 10-et jelöl, és a 16-os helyiértéken van.
Egy ugyanilyen szín¶, de sötétebb szín kódja például #008800.
•
).
A #707070 kódú szín másképpen rgb(
Színezete
.
Egy ugyanilyen szín¶, de világosabb szín kódja
•
A #800000 kódú szín másképpen rgb(
Színezete
.
).
.
Világosabb vagy sötétebb lesz a #0A0000 kódú szín?
17
Felbontások 1.
2.
• Képfelbontás:
a képpontok távolságát mutatja meg egy képben.
•
Mértékegysége: képpont/hüvelyk (pixels per inch = ppi).
•
Tipikus képfelbontás: 72 ppi 300 ppi.
• Színmélység (bitfelbontás):
megmutatja, hogy hány színt használunk a képen, vagyis hány
biten tároljuk a színeket.
•
Mértékegysége: bit/pixel (bits per pixels = bpp). Bitek pixelenként
•
3.
pixel
R
G
B
8
3
3
2
12
4
4
4
24
8
8
8
Tipikusan: 8 bpp 24 bpp.
• Monitor, nyomtató felbontása:
a kép megjelenítésére szolgáló eszköz képpontjainak tá-
volságát mutatja meg.
•
Mértékegysége: pont/hüvelyk (dot per inch = dpi).
•
Monitor tipikusan: 96 dpi.
Kérdések •
Összesen hányféle színt lehet megkülönböztetni 12 bpp színmélység mellett?
•
Hányféle szintjét lehet megkülönböztetni a zöldnek a 8 bpp-s színmélység mellett? mellett?
•
Milyen képformátumoknál van értelme a képfelbontásnak?