Se poate trece la capitolul următor cu tasta ► și se poate reveni la un capitol precedent cu tasta ◄

Conversia unui număr din decimal în orice bază


<

C
a
p
i
t
o
l
u
l

a
n
t
e
r
i
o
r

<

1. Algoritm

Conversia unui număr din zecimal în orice bază în Pascal

Conversia unui număr din zecimal în orice bază în Pascal

2. Cum realizăm această conversie?

Algoritmul conversiei e simplu. Luăm numărul din zecimal și-l împărțim la bază ținând minte restul până când numărul inițial e 0. Având în minte acest algoritm putem face conversia din zecimal în orice bază vrem, fie că e în binar, octal, hexazecimal sau în baza 4 sau 7.

Cum? Asta e tot? Da. Să luăm un exemplu, numărul 22 în baza 5:

  1. 22 MOD 5 = 2; 22 DIV 5 = 4;
  2. 4 MOD 5 = 4; 4 DIV 5 = 0;

Am reținut 2 și 4. Inversăm și obținem numărul 42.

Așadar algoritmul face exact acest lucru, ține minte restul împărțirilor, și apoi îl inversează.

Care e rostul liniei if (rest > 9) then t := chr(65 + rest - 10);?

Singura problemă e dată de bazele mai mari decât 10, cum este hexazecimalul. De ce? Fiindcă restul poate fi un număr mai mare decât 9 și pentru asta avem nevoie de o „cifră”. În hexazecimal folosim literele alfabetului. A înseamnă 10, B înseamnă 11 și așa mai departe. În situația în care baza pe care o dăm algoritmului este mai mare decât 10, chr(65 + rest - 10) spune să folosească literele. chr(65) este litera „A” mare. Dacă restul este 11, atunci vrem fix litera „B”, deci adăugăm 11 la 65 și scădem 10, astfel obținând numărul de ordine 66, iar în tabelul ASCII pe poziția 66 este litera „B”. chr(poziție) pur și simplu este funcția care întoarce caracterul de pe poziția dată.


>

C
a
p
i
t
o
l
u
l

u
r
m
ă
t
o
r

>

Ți-a fost de ajutor ce am scris aici?
Hei, mersi de răspuns.