Октален броен систем

Од Википедија, слободната енциклопедија
Прејди на: содржини, барај
Бројни системи кај разни народи и култури
Индоарапски бројки
Западноарапски
Источноарапски
Индиско семејство
Бурмански
Кмерски
Монголски
Тјаландски
Источноазиски бројки
Јапонски
Кинески
Суџоу
Корејски
Виетнамски
Стапчиња
Азбучни бројки
Абџадски
Арјабатини
Ерменски
Етиопски
Грчки
Кирилични
Хебрејски
Други системи
Егејски
Атички
Вавилонски
Брамански
Египетски
Етрурски
Ескимски
Мајански
Кипу
Римски
Поле со урни
Положбени системи по основа
Декадни (10)
1, 2, 3, 4, 5, 6, 8, 12, 16, 20, 30, 36, 60 повеќе…

Окталниот броен систем е броен систем со основа 8 кој ги користи бројките од 0 до 7. Бројките можат да се направат од бинарни бројки разделување на последователните бинарни цифри во групи од по три бројки (почнувајќи од десно). На пример, бинарната претстава за декадниот број 74 е 1001010, што може да се групира во (00)1 001 010 — така, окталната претстава ќе биде 112.

Во декадниот систем, секое децимално место е основа 10. На пример:

\mathbf{74}_{10} = \mathbf{7} \times 10^1 + \mathbf{4} \times  10^0

Кај окталните бројки, секое место е основа 8. На пример:

\mathbf{112}_8 = \mathbf{1} \times  8^2 + \mathbf{1} \times  8^1 + \mathbf{2} \times  8^0

Со горенаведените пресметки во декаден систем можеме да увидиме зошто 112 во окталниот систм е еднакво на 64+8+2 = 74 во декадниот.

Окталниот систем напати наоѓа примена во информатиката наместо хексадецималниот.

Примена[уреди]

Кај индијанците[уреди]

Јазикот на племето Јуки во Калифорнија и памеанските јазици[1] во Мексико користат октален систем бидејќи говорниците ги бројат празнините меѓу прстите наместо самите прсти.[2]

Во Европа[уреди]

Во 1716 г. шведскиот крал Карл XII му побарал на научникот Емануел Сведенборг да разработи броен систем што ќе се заснова на 64 наместо на 10. Сведенборг сметал дека сметањето со вака голема основа ќе биде претешко за луѓето што не биле така паметни како кралот, па затоа предложил основата да биде 8. Во 1718 Сведенборг напишал ракопис кој не е објавен: „Нова аритметика (сметачка вештина) што се менува кај бројот 8 наместо кај бројот 10“ (En ny räknekonst som omväxlas vid talet 8 istället för det vanliga vid talet 10). Во него бројките 1-7 се означени со согласките l, s, n, m, t, f, u (v), а нулата со самогласката o. Така, 8 = „lo“, 16 = „so“, 24 = „no“, 64 = „loo“, 512 = „looo“ и тн. Броевите со согласки едноподруго се изговараат со самогласни гласови помеѓу нив според посебно правило.[3]

Во информатиката[уреди]

Окталниот систем понекогаш наоѓа примена во информатиката наместо хексадецималниот систем, во поново време најчесто заедно со податотечни дозволи во системите од видот Unix (вид. chmod). Предноста е во тоа што ова не бара дополнителни симболи како цифри (хексадецималнио систем има основа 16 и затоа бара шест дополнителни симболи, покрај оние од 0 до 9). Окталниот систем наоѓа примена и кај дигиталните екрани.

Кога окталниот систем почнал нашироко да се користи информатиката, системите како PDP-8, ICL 1900 и главните терминали на IBM користеле 12-битни, 24-битни или 36-битни зборови. Окталното претставување било идеално за скратување на бинарните бројки бидејќи осум (или дванаесет) бројки можат концизно да прикажат цел еден машински збор (секоја октална цифра покрива три бинарни). Ова ги намалувало трошоците, овозможувајќи операторските табли да се користат цифрени лампи („никси“), седумсегментни цифрарници и дигитрони, каде бинарните прказници се премногу сложени за употреба, декаднитре барале сложена машинска опрема за претворање на основите, а хексадецималните барале приказ на повеќе цифри.

Сите современи сметачки подлоги користат 16-, 32- или 64-битни зборови, кои потоа се делат на осумбитни бајти. Ваквите системи бараат три октални цифри по бајт, со тоа што најголемата значенска окталан цифра претставува две бинарни цифри (плус еден бит од следниот значенски бајт, ако го има). Окталното претставување на 16-битен збор бара 6 цифри, но најголемата значенска октална цифра претставува (прилично несмасно) само еден бит (0 или 1). Со ова претставување нема дава лесен начин да се прочита најголемиот значенски бајт, бидејќи тој е расфрлан во четири октални цифри. Затоа денешните програмски јазици најчесто користат хексадецимален систем, особено бидејќи две хексадецимални цифри укажуваат на точно еден бајт. Некои подлоги со зборови на основа 2 сè уште имаат наредбени подзборови што полесно се читаат ако се прикажани октално. Тука спаѓа PDP-11 и семејството Motorola 68000. Современата и сеприсутна x86-архитектура исто така припаѓа на оваа група, но ретко го користи окталниот систем .

Кај програмските јазици, окталните литерали се назначуваат со разни префикси, како цифрата 0, буквите o или q, или пак азбучно-бојчената комбинација 0o. На пример, литералот 73 (основа 8) може да се претстави на разни јазици како 073, o73, q73 или 0o73. Поновите јазици повеќе не го користат префиксот 0 бидејќи декадните броеви честопати се претставуваат со почетна нула. Префиксот q е воведен за да се спречи забуна на o со нула, додека пак префиксот 0o е воведен за да се спречи започнувањето на бројчен литерал со азбучен знак (како o или q), бидејќи вака литералот може да се помеша со назив на некоја променлива. Префиксот 0o исто така го следи моделот 0x што се користи кај хексадецималните литерали во програмскиот јазик C.[4][5][6]

Окталните броеви што се користат во некои програмски јазици (C, Perl, PostScript…) за текстуално/графичко оретставување на бајтови низи кога извесни бајтови вредности (непретставени во кодна страница, неграфички, со посебно значење во тековниот котекст или непожелни) мора да одбегнат како \nnn. Окталната претстава за не-ASCII бајти е особено згодна со UTF-8, каде секој почетен бајт има октална вредност \3nn и секој продолжителен бајт има октална вредност \2nn.

Претворање[уреди]

Од декадно во октално[уреди]

Метод на последователно делење со 8[уреди]

За да ги претвориме декадни цели броеви во октален систем, изворниот број го делиме со најголемиот можен степен на 8 и последователно ги делиме остатоците со последователно помали степени на 8, сè додека не добиеме степен 1. Окталната претстава ја образуваат количниците, запишани по редоследот кој го налага алгоритамот.

На пример, за да го претвориме бројот 12510 во октален број:

125 / 8^2 = 1
125 − ((8^2)*1) = 61
61 / 8^1 = 7
61 − ((8^1)*7) = 5

Затоа, 12510 = 1758.

Уште еден пример:

900 / 8^3 = 1
900 − ((8^3)*1) = 388
388 / 8^2 = 6
388 − ((8^2)*6) = 4
4 / 8^1 = 0
4 − ((8^1)*0) = 4
4 / 8^0 = 4

Затоа, 90010 = 16048.

Метод на последователно множење со 8[уреди]

За да претвориме декадна дропка во октален систем, ја множиме со 8. Целобројниот дел од резултатот е првата цифра на окталната дропка. Потоа ја повторуваме постапката со дробниот дел од резултатот, сè додека не стане нула, или во прифатливи рамки на грешност.

Пример: го претвораме бројот 0,1640625 во октален број:

0,1640625 x 8 = 1,3125 = 1 + 0,3125
0,3125 x 8 = 2,5 = 2 + 0,5
0,5 x 8 = 4,0 = 4 + 0

Затоа, 0,164062510 = 0,1248.

Овие два метода може да се комбинираат за ѕработење со декадни броеви со целобројни и дробни делови, користејќи го првото за целобројниот дел, а второто за дробниот.

Од декадно во октално[уреди]

За да го претвориме бројот k во декаден систем, ја применуваме формулата што ја карактеризира неговата претстава на основа 8:

k = \sum_{i=0}^n \left( a_i\times 8^i \right).

Во оваа формула, ai е претворање на подеинечна октална цифра, каде i е бројот на цифрата (броејќи од 0 за најдесната цифра).

Пример: го претвораме бројот 7648 во декаден број:

7648 = 7 x 8² + 6 x 8¹ + 4 x 8° = 448 + 48 + 4 = 50010

Двоцифрените октални броеви се множат со првата цифра со 8, па ја додаваме втората и го добиваме збирот.

Пример: 658 = 6x8 + 5 = 5310

Од октално во бинарно[уреди]

Ако сакаме да претвориме од октален во бинарен систем, ја заменуваме секоја октална цифра со нејзината бинарна претстава.

Пример: го претвораме бројот 518 во бинарен број:

58 = 1012
18 = 0012

Затоа, 518 = 101 0012.

Од бинарно во октално[уреди]

Оваа постапка е обратна на претходниот алгоритам. Бинарните цифри се ставаат во групи од три, почнувајќи од децималната запирка, и продолжуваат десно и лево. Потоа додаваме почетни нули (или завршни нули десно од децималната запирка) за да се пополни последната група од три цифри, ако е потребно. Потоа секое трио го заменуваме со соодветната октална цифра.

На пример, го претвораме бинарниот број 1010111100 во октален:

001 010 111 100
1 2 7 4

Затоа, 10101111002 = 12748.

Го претвораме бинарниот број 11100,01001 во октален:

011 100  .  010 010
3 4  .  2 2

Затоа, 11100,010012 = 34,228.

Од октално во хексадецимално[уреди]

Ова претворање се врши во два чекора, користејќи го бинарниот систем како помошна основа. Окталното се претвора во бинарно, а потоа бинарното во хексадецимално, разделувајќи ги цифрите во групи од по четири и секоја од нив ќе соодветствува на хексадецимална цифра.

На пример, го претвораме окталниот број 1057 во хексадецимален:

Во бинарно:
1 0 5 7
001 000 101 111
потоа хексадецимално:
0010 0010 1111
2 2 F

Затоа, 10578 = 22F16.

Од хексадецимално во октално[уреди]

Претходниот алгоритам се применува на обратен начин.

Поврзано[уреди]

Наводи[уреди]

Надворешни врски[уреди]

  • Претворач за декадни/октални бројки (JavaScript, ОЈЛ) (англиски)
  • Octomatics - броен систем што овозможуа проста визуелно пресметување во октален систем (англиски)