ASCII taula estandarra edo ASCII-7
Gogoratu ASCII taula estandarrak 128 karaktere biltzen dituela (0 kodean hasita eta 127 kodean bukatuta). ASCII taula estandarrak letra eta sinbolo arruntenak hartzen ditu eta 7 bit behar dira denak adierazi ahal izateko (27=128).
ASCII-7 taularen zatia: karaktere inprimagarriak eta paritate-bita kalkulatu gabe (beti 0 da)
Demagun kode bitarrean emaiko karaktere bat array batean gorderik daukagula. Karakterea adierazteko 7 bit ditugu, horrez gain zortzigarren bit bat gehiago daukagu arrayean: paritate-bita. Beraz, datu osoa (paritate-bita eta karakterea) gordetzeko 8 boolear bilduko dituen array bat erabili beharko da:
- Arrayaren lehen posizioan paritate-bita, eta
- arrayaren gainerako posizioetan karaktereari dagozkion 7 bitak
Paritatea: informazioari buruzko informazioa (metainformazioa)
Paritatea informazio osagarria da, informazio bati buruzko informazioa da. Paritatea bikoitia ala bakoitia izan daiteke (programa honetan paritate bikoitia erabiliko dugu). Paritate bikoitiko metodoan paritate-bitaren balioa honela kalkulatzen da: informazioa adierazten duten 7 biten batekoen kopurua kalkulatzen da, eta horren arabera paritate-bitaren balioa ezartzen da. Jarraian adibide bi:
- Datua aztertu eta batekoen kopurua 3 bada, paritate-bitaren balioa 1 izango da paritate bikoitiko metodoan. Horrela, guztira, datuak 4 bateko izango ditu (batekoen kopurua bikoitia izango da).
- Bestalde, batekoen kopurua 2 bada paritate-bitaren balioa 0 izango da paritate bikoitiko metodoan. Horrela, guztira, datuan 2 bateko izango dira (batekoen kopurua bikoitia izango da ere).
# eta $ karaktereen adierazpen bitarrak eta dagozkien paritate-bitak
Telekomunikazio sistema batean karakterea transmititu behar denean, nodo igorleak datua (karakterea) eta paritate-bita elkarrekin bidaltzen ditu, helburuko nodoak informazioa jasotzen du eta frogatu behar du paritatea betetzen den ala ez. Helburuko nodoak ez daki heldu zaion datua bidalitakoarekin bat datorren ala bidean kutsatu den, baina bai igarri dezake heldu zaion datua okerra dela. Transmisioan erroren bat gertatu bada eta bit batek bere balioa aldatu badu paritatea ez da beteko, eta helburuko nodoak nodo igorleari eskatuko dio informazioaren bidalketa errepikatzea.
Paritate-bita kalkulatzeko aski da XOR ate logikoak datuei aplikatzea. Ikus dezagun aurreko irudiko bi adibideetan (# eta $ karaktereetan) paritate-bita nola lor daitekeen XOR eragilea erabiliz. Baina gogora dezagun lehenik XOR eragilearen egia-taula bi sarrera ditugunean:
a XOR b egia izango da a eta b aurkakoak direnean
Bi sarrerentzat XOR eragilearen egia-taula hori aintzat harturik, zazpi bitekin era berean aplikatuko da XOR eragilea: eragigaiak binaka hartu eta haien emaitza hurrengo eragigaiarekin konbinatu.
Esandakoa, paritate-bita kalkulatzeko aski da XOR ate logikoak etapaz-etapa aplikatzea:
Ikus dezagun aurreko bi adibideetan (# karakterea eta $ karakaterea) paritate-bita nola lor daitekeen XOR eragilea erabiliz.
# karakterea
# karakterearen kode bitarra 0100011 da eta dagokion paritate-bita badaigu 1 dela, XOR eragilearen bitartez paritate-bita lortzeko honela joko dugu etapaz-etapa:
# karakterearen kode bitar osoa paritate bikoitiko metodoan: 1 0100011.
- Lehen etapa, 0100011 datua, ezkerreko lehen bi bitak hartuta: 0 XOR 1 = 1 ondorioz, lehen etaparen emaitza 100011 da.
- Bigarren etapa, 100011 datua, ezkerreko lehen bi bitak hartuta: 1 XOR 0 = 1 ondorioz, bigarren etaparen emaitza 10011 da.
- Hirugarren etapa, 10011 datua, ezkerreko lehen bi bitak hartuta: 1 XOR 0 = 1 ondorioz, hirugarren etaparen emaitza 1011 da.
- Laugarren etapa, 1011 datua, ezkerreko lehen bi bitak hartuta: 1 XOR 0 = 1 ondorioz, laugarren etaparen emaitza 111 da.
- Bosgarren etapa, 111 datua, ezkerreko lehen bi bitak hartuta: 1 XOR 1 = 0 ondorioz, bosgarren etaparen emaitza 01 da.
- Seigarren etapa, 01 datua, ezkerreko lehen bi bitak hartuta: 0 XOR 1 = 1 ondorioz, seigarren eta azken etaparen emaitza 1 da (paritate-bita 1 da).
$ karakterea
$ karakaterearen kode bitarra 0100011 da eta dagokion paritate-bita badaigu 1 dela, XOR eragilear bitartez paritate-bita lortzeko honela joko dugu etapaz-etapa:
$ karakaterearen kode bitar osoa paritate bikoitiko metodoan: 0 0100100.
- Lehen etapa, 0100100 datua, ezkerreko lehen bi bitak hartuta: 0 XOR 1 = 1 ondorioz, lehen etaparen emaitza 100100 da.
- Bigarren etapa, 100100 datua, ezkerreko lehen bi bitak hartuta: 1 XOR 0 = 1 ondorioz, bigarren etaparen emaitza 10100 da.
- Hirugarren etapa, 10100 datua, ezkerreko lehen bi bitak hartuta: 1 XOR 0 = 1 ondorioz, hirugarren etaparen emaitza 1100 da.
- Laugarren etapa, 1100 datua, ezkerreko lehen bi bitak hartuta: 1 XOR 1 = 0 ondorioz, laugarren etaparen emaitza 000 da.
- Bosgarren etapa, 000 datua, ezkerreko lehen bi bitak hartuta: 0 XOR 0 = 0 ondorioz, bosgarren etaparen emaitza 01 da.
- Seigarren etapa, 00 datua, ezkerreko lehen bi bitak hartuta: 0 XOR 1 = 0 ondorioz, seigarren eta azen etaparen emaitza 0 da (paritate-bita 0 da).
Programaren enuntziatua eta funtsezko datu-mota
Programaren datu-mota garrantzitsuena boolearren arraya da. Hauxe:
PROGRAM ParitateBikoitia ; {$MODE TP} CONST BEHEMUGA = 1 ; GOIMUGA = 8 ; TYPE DM_arboBitak = ARRAY[BEHEMUGA..GOIMUGA] OF Boolean ; |
Programak hiru zati izango ditu:
- Transmititu beharreko ASCII-7 karaktere inprimagarria lortu eta dagokion paritate-bita kalkulatu, hots, datua lortu
- Datuaren (ASCII-7 karakterea eta dagokion paritate-bita) transmisioa simulatu (bi bitetan aldaketak gerta daitezke)
- Datua (ASCII-7 karakterea eta dagokion paritate-bita) helburuko nodoan jaso y transmisioa ondo joan den konprobatu
Programaren hiru zatien deskribapen funtzionalak:
- PXXXXXXX forma duen boolearren array batekin lan eginez, Random funtzioaren bitartez azken 7 bitak (XXXXXXX) lortu. Ondoren (P) lehen bitaren balioa paritate bikoitiaren arabera kalkulatu, hots, XOR eragilea aplikatu XXXXXXX bit guztiei. Arrayaren edukia, azkenean, paritate bitarekin emaniko ASCII-7 karaktere bat izango da, 8 bit guztira. Lorturiko datua karaktere inprimagarria dela ziurtatu beharko da.
- Transmisioa simulatu. Urrats honetan arrayaren bi bit aukeratu Random bitartez, eta berriro Random bidez bit horien balioak berkalkulatu (aldatuak gerta daizteke, ala ez).
- Helburuko nodoak jasotako datuaren paritatea kalkulatuko du, eta emaitza horren arabera erabakia bi hauetariko bat izango da:
- Paritate bikoitia mantendu da, datua ontzat eman eta pantailaratu.
- Paritate bikoitia ez da mantendu, transmisioan erroreren bat gertatu denez nodo igorleari bidalketa errepikatzea eskatzen zaio (2. urratsera itzuli eta transmisioa berriro burutu 1. urratseko jatorrizko datuarekin).
Hauxe da ariketari erantzuten dion ParitateBikoitia.pas iturburu-programa.
Programaren exekuzio bat
Programa exekutatzean ondoko emaitza lor daiteke, non transmisioa ondo bete den:
Paritate-bitaren metodoa sarritan lagungarria da
Lehen bidalketan 8. bitak aldaketa nozitu du eta horregatik paritatea ez da betetzen, beraz helburuko nodoak bidalketaren errepikapena eskatzen du. Bigarren bidalketan bitak ez dira aldatzen eta paritatea betetzean bidalketa ontzat ematen da. Bidalitako karakterea b, jasotako karakterea b.
Programaren beste exekuzio bat
Programa exekutatzean ondoko emaitza lor daiteke, non transmisioan errorea gertatu den baina paritate-bitaren metodoak ez du antzeman izan:
Paritate-bitaren metodoak duen ahultasuna
Kasu honetan bidalketa ontzat ematen da transmisio okerra izan arren. Ikusten denez, 4. eta 5. bitak aldatuak gertatu dira, baina aldaketa bien ondorioz batekoen kopurua bikoitia da ere, eta horregatik paritatea betetzen da. Hori dela eta, ontzat eman den bidalketa okerra izan da: jatorrizko " karakterea helburuko nodoak jasotzen du : karaktere bezala.
iruzkinik ez:
Argitaratu iruzkina