Skaitļu konversija starp dažādām sistēmas bāzēm

Vikipēdijas lapa

Skaitļu konversiju (konvertēšanu) starp dažādām sistēmas bāzēm iespējams veikt ar trim dažādām metodēm: ar tiešo metodi, atņemšanas metodi un dalīšanas metodi.

Tiešā metode[labot šo sadaļu | labot pirmkodu]

Tiešo metodi ērti izmantot, lai konvertētu bināro skaitli decimālā sistēmā. Šajā metodē tiek izmantoti pozicionālās skaitīšanas sistēmas principi - katra cipara vērtību skaitlī nosaka tā pozīcija. Pieņemsim, ir dots binārais skaitlis 11001.01, kuru vajag pārvērst decimālā sistēmā, tad tiešās metodes algoritms ir sekojošs:

  • Konvertējamā skaitļa bāzi izsaka kā jaunās sistēmas skaitli (binārās sistēmas bāze ir 210, jo tiek lietoti divi dažādi cipari - 1 un 0)
  • Katram konvertējamā skaitļa ciparam nosaka tā pozīciju skaitlī. Pirmajam ciparam pa kreisi no komata atbilst 0. pozīcīja, otrajam: 1. utt. Analoģiski, pirmajam ciparam pa labi no komata atbilst (-1). pozīcija, otrajam (-2). utt.

Tātad dotajam piemēram ir šāda atbilstība:

Skaitļa cipari 1 1 0 0 1 , 0 1
Ciparu pozīcija 4 3 2 1 0 -1 -2
  • Izsaka konvertējamo skaitli kā polinomu: t.i., katrs cipars tiek pareizināts ar sistēmas bāzi, kas kāpināta tādā pakāpē, kas atbilst konkrētā cipara pozīcijai:

1*24+1*23+0*22+0*21+1*20+0*2-1+1*2-2=25.2510 Līdzīgi var konvertēt arī citu sistēmu skaitļus.

Atņemšanas metode[labot šo sadaļu | labot pirmkodu]

Šo metodi ērti izmantot, lai konvertētu decimālos skaitļus binārā formā. Metodes būtība ir sekojoša - no dotā skaitļa vajag atņemt vislielāko iespējamo skaitli, ko var iegūt, kāpinot vēlamās sistēmas bāzi ar veselu kāpinātāju N. Pēc tam no starpības atkal atņem skaitli, ko iegūst, kāpinot bāzi ar pakāpi N-1 (par vienu vienību mazāku!). Atņemšana turpinās, līdz kamēr netiek iegūta starpība 0 vai arī tiek iegūta vēlamā skaitļa precizitāte. Katru reizi, kad atņemšana iespējama, rezultātā tiek rakstīts 1, un 0 - ja atņemšana nav iespējama. Piemēram apskatīsim decimālo 156,25, kuru ir jāpārvērš binārā sistēmā:

  • vislielākais skaitlis, ko var atņemt no 156,25 ir 128=27 (28=256 neder)
Darbība Ko atņem? Vai atņemšana iespējama?
156.25 - 128= 28.25 27 1
28.25 - 64 26 0
28.25 - 32 25 0
28.25 - 16= 12.25 24 1
12.25 - 8= 4.25 23 1
4.25 - 4= 0.25 22 1
0.25 - 2 21 0
0.25 - 1 20 0
- - ,
0.25 - 0.5 2-1 0
0.25 - 0.25 2-2 1

Tātad rezultāts ir šāds: 10011100,01

Dalīšanas metode[labot šo sadaļu | labot pirmkodu]

Metodes būtība - pirmajā solī konvertējamais skaitlis tiek dalīts ar jaunās sistēmas bāzi, kas izteikta vecajā sistēmā. Katrā nākamajā solī iepriekšējās dalīšanas veselais rezultāts tiek atkal dalīts ar jaunās sistēmas bāzi, līdz kamēr veselais dalījums ir 0; turklāt, katrā dalīšanā iegūtais atlikums veido skaitli jaunajā sistēmā (jāievēro, ka rezultāts šajā metodē tiek nolasīts no "lejas" uz "augšu" - t.i, pēdējās dalīšanas atlikums ir pirmais cipars konvertētā skaitlī). Piemērs - decimāla skaitļa 1230 konvertēšana oktālā sistēmā:

  • šeit decimālais skaitlis tiek dalīts ar 8, kas ir oktālās sistēmas bāze decimālā pierakstā)
Dalīšana Veselais dalījums Atlikums
1230:8 153 6
153:8 19 1
19:8 2 3
2:8 0 2

Rezultāts 123010=23168

Reizināšanas metode[labot šo sadaļu | labot pirmkodu]

Dalīšanas metode nav piemērota daiļskaitļu pārvēršanai - šajā gadījumā jāizmanto dalīšanai pretējo darbību - reizināšanu. Metodes algoritms: pirmajā solī konvertējamais skaitlis tiek reizināts ar jaunās sistēmas bāzi, kas izteikta vecajā sistēmā. Katrā nākamajā solī iepriekšējās reizināšanas rezultāta daļveida daļa tiek pareizināta ar jaunās sistēmas bāzi., līdz kamēr daļveida daļa reizinājumam būs 0 vai arī tiks sasniegta vēlamā precizitāte (t.i., vēlamais ciparu skaits aiz komata). Katrā solī iegūtā reizinājuma veselā daļa veido jauno skaitli (atšķirībā no dalīšanas metodes, šeit rezultāts tiek nolasīts dabīgā secībā, sākot ar pirmo reizināšanu). Piemērs - decimālā skaitļa 0.140625 konversija oktālā sistēmā:

Darbība Rezultāta veselā daļa Rezultāta daļveida daļa
0.140625*8=1.125 1 0.125
0.125*8=1.0 1 0

Rezultāts: 0.14062510=0.118.

Dalīšanas un reizināšanas metodes apvienošana[labot šo sadaļu | labot pirmkodu]

Dalīšanas un reizināšanas metodes kombinē, kad konvertējamais skaitlis satur gan veselo daļu (kas nav 0), gan daļveida daļu (kas nav 0). Piemēram, ja ir dots decimālais skaitlis 2316.140625, tad ar dalīšanas metodi atsevišķi pārvērš veselo daļu - 2316, un atsevišķi ar reizināšanas metodi - daļu 0.140625. Tātad 2316.14062510=2316.118

Skaitļu ar bāzi 2i pārvēršana skaitlī ar bāzi 2j[labot šo sadaļu | labot pirmkodu]

Skaitļus, kuru bāzi var izteikt 2i var ļoti vienkārši pārvērst skaitlī, kura sistēmas bāze ir izsakāma kā 2j. Tas ir, šo metodi var izmantot darbā ar bināro (21), oktālo (23), heksadecimālo (24) u.tml. sistēmām. Metodes būtība ir sekojoša -

  • katru konvertējamā skaitļa ciparu izsaka kā bināro skaitli ar i cipariem (binārā skaitļa ciparu skaitam jāsakrīt ar dotā skaitļa bāzes divnieka pakāpi).
  • Tad jaunizveidoto virkni sagrupē pa bināriem skaitļiem, lai katrā grupā būtu j cipari (jaunās sistēmas bāzes divnieka pakāpe), turklāt grupēšanu sāk no komata abos virzienos; ja nepieciešams, virkni papildina ar nullēm
  • Atliek konvertēt katru grupēšanas laikā iegūto bināro skaitli uz decimālo sistēmu.

Piemērs: oktāla skaitļa 477,65 konversija heksadecimālā sistēmā.

  • 477.65
  • 100 111 111, 110 101 (410 atbilst 1002, 710 atbilst 1112 utt. Jāievēro, ka katrs binārais skaitlis sastāv no 3 cipariem, jo 23=8
  • 1 0011 1111, 1101 01 (cipari tiek pārgrupēti pa 4 (24=16; 16 ir heksadecimālās sistēmas bāze. Jāievēro, ka grupēt sāk no komata)
  • 0001 0011 1111, 1101 0100 (tiek pievienotas trūkstošās nulles virknes galos)
  • 1 3 15, 13 4 (binārajam 00012 atbilst 110, 00112=310 utt.)
  • 1 3 F, D 4 (15 tiek aizvietots ar F, jo 1510=F16; 13 tiek aizvietot ar D pēc analoģijas)

Rezultāts 477.658=13F,D416

Ārējās saites[labot šo sadaļu | labot pirmkodu]