# Okuma nombrosistemo

**Okuma nombrosistemo** estas pozicia nombrosistemo kun la bazo 8. Ĝi uzas nur 8 ciferojn por skribi nombrojn, nome: 0, 1, 2, 3, 4, 5, 6 kaj 7.

La nombro 8 (en la kutima dekuma skribo, t.e. 810) okume estas skribata kiel 10, aŭ pli precize 108 (oni legu: «dek okume»). Ekzamenante la ciferojn de okuma nombroprezento de dekstre maldekstren, oni atribuas al ĉiu sekva ciferpozicio 8-oble pli grandan pezon ol al la antaŭa, t.e. la ciferojn de okuma nombroprezento oni muliplikas per potencoj de 8: **8, 64, 512, …, 8n …**

Por transformi dekuman nombroprezenon en la okuman, oni sinsekve dividas ĝin per 8 kaj skribas ricevitajn restojn en la ordo ekde la lasta, kaj finas per la lasta kvociento. Ekzemple, por 90010:

 900 │ 8

¯ 8  ├────

 ──  │ 112 │ 8

 10   ¯ 8  ├───

¯ 8    ─── │ 14 │ 8

  ──    32  ¯ 8 ├──

  20   ¯32   ── │ **1**

 ¯16    ──    **6**

  ──     **04**

Do, 90010 = 16048. Alivorte,

90010 = **4**×80 + **0**×8¹ + **6**×8² + **1**×8³ = 4 + 0 + 384 + 512.
Tiu sistemo apenaŭ estas uzata ekster komputado, kvankam historie ĝi estis komunuza en almenaŭ 2 indiĝenaj lingvoj Amerikaj (la *jukia*, en:Yuki language kaj la *pamea*, en:Pame languages). En tiuj lingvoj ĝi respondis al la maniero nombri per fingraj interspacoj aŭ per la fingrartikoj de pugnigitaj manoj.

## La okuma nombrosistemo en komputado

La utilo de la okuma nombroprezento en komputado estas ŝuldata al facileco de konvertado inter la nombrosistemoj okuma (preskaŭ same mallonga, kiel la dekuma) kaj la duuma (uzata de la komputiloj, sed tre longa): sufiĉas anstataŭigi ĉiun ciferon okuman per ĝia prezento duuma — aŭ inverse, anstataŭigi ĉiun triopon da duumaj ciferoj per responda okuma cifero. Jenas la duumaj prezentoj de la okumaj ciferoj:

```
08  = 0002
18  = 0012
28  = 0102
38  = 0112
48  = 1002
58  = 1012
68  = 1102
78  = 1112

```

Tial ekz-e

25418 = [ 28 | 58 | 48 | 18 ] = [ 0102 | 1012 | 1002 | 0012 ] = 0101011000012;
10101111002 = 12010211121002 = 18287848 = 12748.
En la programlingvoj por la okumaj numeraloj oni plej ofte uzas la
notacion de C, antaŭmetante la ciferon
`0`:

`0435` = 4358 = 28510 = `285`
En konstantoj prezentantaj signoĉenojn gravaj programlingvoj
(ekz‑e C, Perl) allasas uzon de okumaj kodoj
kun antaŭmetita oblikvo (eskapilo):

```
$ perl -e 'print "Jen \100 (heliko)\n"'
Jen @ (heliko)

```

Avantaĝo de okuma nombroprezento estas ke ĝi uzas la ciferojn, kiel estas kutime por la nombroj (la 16-uma nombrosistemo krome uzas 6 literojn por prezenti la mankantajn ciferojn 16-umajn pli grandajn ol 9). Tamen kun la disvastiĝo de 8-bitaj bajtoj (bitokoj) la 16-uma sistemo eklipsis la okuman, ĉar ĝi pli bone kongruas kun la bajta disdivido: ĉiu bajto prezenteblas per ekzakte 2 deksesumaj ciferoj, dum la okuma nombroprezento transpasas bajtolimojn (2 okumaj ciferoj prezentas 6 bitojn, do malpli ol bajton; 3 okumaj ciferoj prezentas 9 bitojn, do pli ol bajton).

Oni plu uzas okumajn nombrojn kiam la datumo konsistas el 3-bitaj grupoj. Ekz‑e por kodi la dosierajn atingorajtojn:

`rwx r-x r--` = 1112 1012 1002 = 4+2+1;4+1;4 = 7548 = `0754`
Aliflanke, kun la disvastiĝo de la normo UTF-8, la okumaj ciferoj povas denove iĝi oportunaj por la dubajta kodoprezento UTF-8 de la neaskiaj unikodaĵoj ĝis U+FFF, en kiu la okumaj 4-ciferaj signonumeroj αβγδ(8) ricevas la formon `\3αβ \2γδ` (la komencan bajton markas 3=112, la duan bajton, 2=102). Ekz‑e por la Esperanta litero *ŭ* (U+16D, okume 0555) Linuksa terminalo funkcianta en UTF-8 eligas jenan rezulton (la komando `od -c` printas la neaskiajn bajtojn okume):

```
$ echo "aŭto" | od -c
0000000 a 305 255 t o \n
0000006

```

Forĵetante la bajtnumerojn (la unuajn ciferojn 3 kaj 2) de la prezento `305 255`, oni ricevas la okuman signonumeron de *ŭ*, `05 55` = 5558.

## Vidu ankaŭ

* Duuma nombrosistemo
* Deksesuma nombrosistemo