Loading...
 
PDF Print

Bevezetés az alfanumerikus adatok reprezentációjába

Azok az olvasók, akik járatosak a számok, karakterek, és szimbolumok digitális reprezentációjába, átugorhatják ezt a fejezetet. A DICOM szabvány nem megérthető anélkül, hogy "jeleket" tudjunk reprezentálni a számítógépen .
A legalapvetőbb fogalom a digitális képreprezentációban a "bit". A fizikai bit olyan egység, melynek két állapota van. Például egy magasabb / alacsonyabb feszültségérték két pont között mérve, vagy: elektromos áram folyik / nem folyik egy adott vezetéken, stb. A konkrét fizikai megvalósítástól függetlenül felfoghatjuk a bitet két lehetséges logikai állapotként, egy absztrakt egységnek, melyet úgy hívunk: bit.

A szokásos jelölés erre a két állapotra a 0 és az 1.

Innentől nem törődünk e két logikai állapot valós fizikai reprezentációjával. Annyi fontos, hogy e két állapot alapján a számítógép kódolhat/felismerhet alfanumerikus karaktereket. Lényeges, hogy karakterek (betűk) vagy más nem numerikus szimbólumok esetén a kódolás tetszőleges. Számok esetében viszont a kettes számrendszer szerinti (bináris) reprezentáció rengeteg előnyt jelenthet számunkra. Ez egyértelmű, hiszen a két lehetséges számjegy a bináris felírásban az 1 és a 0. Mielőtt bevezetnénk a bináris felírást, először leírjuk, hogyan csoportosíthatjuk a biteket. A számítógépek általában nem egyenként találkoznak a bitekkel, hanem négyesével csoportosítva, ez a

fél bájt

16 különböző fél bájt lehetséges, amint az a táblázatból is látszik:

A 4 bit A megfelelő hexadecimális jel A megfelelő decimális szám
0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 A 10
1011 B 11
1100 C 12
1101 D 13
1110 E 14
1111 F 15

 
Itt:

  • hexadecimális : 16-os számrendszer, a helyiértékek decimálisan: 1, 16, 256, ...
  • decimális: 10-es számrendszer, a helyiértékek: 1, 10, 100, 1000...
  • bináris: 2-es számrendszer: a helyiértékek: 1, 2, 4, 8, 16...

Érdekes, hogy az általunk használt tízes számrendszer nem az egyetlen valaha használt rendszer. A maják a vigezimális rendszert használták, a 20-as számrendszert és ismerték a 0-t; a mezopotámiaiak a sexagezimális (60-as) számrendszert használták, de problémáik akadtak a hiányzó helyiértékekkel, lassan fedezték fel a "semmi" fogalmát.

A táblázat első oszlopa egy félbájt 16 különböző állapotát sorolja fel. A második oszlop tartalma a hexadecimális számjegy (hexa számjegy) a megfelelő félbájtra vonatkozva. A harmadik oszlop a "szokásos" számérték, melyet egy félbájthoz szintén hozzáköthetünk. Ha viszont számokról beszélünk, a félbájt nem
tízes, hanem kettes számrendszerben reprezentál.

A decimális helyértékek bit és félbájt esetén:

a baloldali számjegy decimálisan a balról második számjegy decimálisan a jobbról második számjegy decimálisan a jobboldali második számjegy decimálisan
8 4 2 1

 
Gyakorlásképpen nézzük a "B" hexa számjegy decimális értékét, mely a

1011

bitfolyamot takarja definíció szerint. A helyiértékek a fenti táblázat alapján tehát jobbról balra haladva számíthatóak: az első tag 1, mert az "egy" helyiértéken található szám 1. A következő helyiérték balra megint 1-es értékű, a helyiérték pedig "kettő", tehát B értékében van még egy "kettő" is; a következő bit balra 0, tehát nincsen "négy" B értékében. Az utolsó bit balra továbbhaladva pedig megint 1, tehát egy "nyolcas" van B értékében. Ezeket összeszámolva:

1*"egy"+1*"kettő"+0*"négy"+1*"nyolc"

Tehát B értéke tízes számrendszerben

1*1+1*2+0*4+1*8 = 11

 
így tehát "megállapodásunk" alapján B értéke

B=11

Ahol B egy hexa számjegy és 11 a decimális értéke.

Tehát így (de)kódolhatjuk az összes 16 félbájtot, ha a számokat akarjuk reprezentálni. Sajnos a félbájt még nem a végső egység, melyet a digitális szám- és alfanumerikus karakter-reprezentációban használunk (eddig csak számokról beszéltünk). Az adatreprezentáció egy jobb egysége a

bájt

 
A bájt két félbájt kombinációja. így 16*16=256 lehetséges kombinációt ad 8 bit, tehát 256 különböző bájt lehetséges. A következő táblázat egy részét tartalmazza a lehetséges 256 bájt értéknek. A decimális értékek számítási módját is megadtuk. Az első félbájt értékét tehát meg kell szorozni 16-tal, és végül a kettőt össze kell adnunk.

A két félbájt a bájt decimális értéke
00 0*16+0=0
01 0*16+1=1
02 0*16+2=2
... ...
19 1*16+9=25
1A 1*16+10=26
1B 1*16+11=27
... ...
BA 11*16+10=186
BB 11*16+11=187
BC 11*16+12=188
... ...
FE 15*16+14=254
FF 15*16+15=255
3. táblázat

 
Világos tehát, hogy egy bájt tízes számrendszerben 0 és 255 közötti számokat tud reprezentálni (összesen 256 lehetőség). Általában 1 bájt nem elég, hogy a gyakorlatban előforduló értékeket leírja. A következő egység a dupla-bájt, a

szó

 
A decimális értékre való átszámolást tehát a következőképpen tehetjük meg. Először kiszámoljuk a félbájtok értékét, majd megszorozzuk az első félbájtokat 256-tal. Például:

AB 1F=AB*256+1F=(10*16+11)*256+(16+15)*1=171*256+31=43807

 
Még egy megjegyzés. Amikor a numerikus reprezentációt néztük a bájtok sorrendjében, biztosra vettük, hogy jobbról balra kell olvasnunk a helyiértékeket, ahogy a decimális értékeknél is szoktuk. Például láttuk, hogy a következő adatfolyam-értelmezés ez:

AB 1F= 3807

Megtehettük volna, hogy visszafelé haladunk, ha korábban úgy állapodunk meg, hogy balról jobbra növekednek a helyiértékek. Ekkor a következő eredményre jutunk:

AB 1F=AB*1+1F*256=271*1+31*256=271+7936=8207

 
Ha már a számok reprezentációját megértettük digitális (hexadecimális) formájukban, nézzük meg az alfanumerikus karaktereket, mint például a különböző nyelvek ábécéinek betűit, a központozási jeleket és más szimbólumokat. Fontos, hogy számjegyek állhatnak nem numerikus jelentésben is. Például a "2" szimbólum jelenthet egy hattyút és lehet, hogy semmi köze nincsen a kettes számhoz.

A következő táblázat az u.n. Latin-2 kódtáblázat, ami 256 különböző karakter reprezentációját adja meg a ISO 8859-2 szabvány szerint:

Image
Latin-2 karakterkódolás

2. ábra

A 2. ábra sorai és oszlopai a hexadecimális karakterekkel vannak megjelölve. Például az "Ő" karakter a D-sorban van és a -5 oszlopban. Tehát a félbájtok, melyek a magyar "Ő" karaktert leírják a D és az 5. A bájt, amit e két félbájt kiad, a D5. Tehát az ISO Latin-2 kódtáblázatban:

Ő=D5

 
Bináris formában (mivel D=1101 és 5=1001)

Ő=D5=11011001

Ahogy már láttuk, a D5 bájtnak van egy másik jelentése is, ha számként tekintünk rá:

D5=13*16+5=213 és ugyanakkor D5=Ő

 
Hogyan tudjuk meg, hogy a D5 akkor mit is jelent?
Láthatjuk, hogy annak a 2 bájtnak, hogy AB 1F most már három különböző jelentése lehet:

43807 8207 Ť és ”nem értelmezhető”
Ha a AB 1F egy szám, és a helyiértékék jobbról balra növekednek Ha a AB 1F egy szám, és a helyiértékék balról jobbra növekednek ha AB 1F karakterként tekintjük és a Latin-2 kódtáblázat szerint értelmezzük

 
Még nagyon sok másik karaktertábla van, és sok numerikus értelmezés is. Ha találkozunk a bájt mentéssel avagy DICOM mentéssel hexadecimális formában, meg kell bizonyosodnunk, hogy értelmezésünk helyes. Például nézzük a következő mentést ami 32 bájtból áll:

4B 65 64 76 65 73 4F 6C 76 61 73 F3 21 4E 65 6D
65 6E 6A 65 6E 65 6C 61 6B 65 64 76 65 64 21 21

Ha ezt a Latin-2 kódolásként értelmezzük, jelentése:

KedvesOlvasó!Nemenjenelakedved!!

Ha azt feltételezzük, hogy ezek szavak (dupla bájtok) melyeket számokként kell érteni, és a helyiértékek jobbról balra nőnek, akkor 16 különböző számot kapunk.

Általában a szavak a DICOM-ban a képernyő egy pixelének állapotát írják le. Két bájt (4 hexadecimális számjegy) 65536 különböző értéket jelölhet. Egy ilyen négy számjegyű csoportja a hexadecimális számoknak 65536 különböző pixelállapotot takarhat. A legegyszerűbb értelmezés 65536 különböző szürkeskála-értéket jelenthet.

Amit eddig megérthettünk, hogy a félbájt, a bájt, vagy bájtok kombinációja, mint a szó, sokféle különböző interpretációnak ad lehetőséget. Azaz a bájtok halmazát nem tudjuk olvasni anélkül, hogy világosan közölnénk annak szabályait, hogy hogyan kódoljuk a karaktereket, szimbólumokat és számokat. A DICOM szabvány egy része éppen a megengedett kódolási módszerek leírása, később ezzel még foglalkozunk.

 




Site Language: English

Log in as…