Осмеречен броен систем

Осмеречен броен систем (октален броен систем) броен систем со основа 8 кој ги користи бројките од 0 до 7. Бројките можат да се направат од двоични (бинарни) бројки разделување на последователните двоични цифри во групи од по три бројки (почнувајќи од десно). На пример, двоичната претстава за десетичниот број 74 е 1001010, што може да се групира во (00)1 001 010 — така, осмеречната претстава ќе биде 112.
Во десетичниот (декаден) систем, секое децимално место е основа 10. На пример:
:<math>\mathbf{74}_{10} = \mathbf{7} \times 10^1 + \mathbf{4} \times 10^0</math>
Кај осмеречните бројки, секое место е основа 8. На пример:
:<math>\mathbf{112}_8 = \mathbf{1} \times 8^2 + \mathbf{1} \times 8^1 + \mathbf{2} \times 8^0 </math>
Со горенаведените пресметки во десетичен систем можеме да увидиме зошто 112 во осмеречниот систем е еднакво на 64+8+2 = 74 во десетичниот.
Осмеречниот систем напати наоѓа примена во информатиката наместо шеснаесетеречниот (хексадецималниот).
1 Примена
1.1 Кај индијанците
Јазикот на племето Јуки во Калифорнија и памеанските јазици во Мексико користат осмеречен систем бидејќи говорниците ги бројат празнините меѓу прстите наместо самите прсти.
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“ итн. Броевите со согласки едноподруго се изговараат со самогласни гласови помеѓу нив според посебно правило.
1.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.
осмеречните броеви што се користат во некои програмски јазици (C, Perl, PostScript…) за текстуално/графичко оретставување на бајтови низи кога извесни бајтови вредности (непретставени во кодна страница, неграфички, со посебно значење во тековниот котекст или непожелни) мора да одбегнат како \nnn. осмеречната претстава за не-ASCII бајти е особено згодна со UTF-8, каде секој почетен бајт има осмеречна вредност \3nn и секој продолжителен бајт има осмеречна вредност \2nn.
2 Претворање
2.2 Од десетично во осмеречно
2.1.1 Метод на последователно делење со 8
За да ги претвориме десетични цели броеви во осмеречен систем, изворниот број го делиме со најголемиот можен степен на 8 и последователно ги делиме остатоците со последователно помали степени на 8, сè додека не добиеме степен 1. осмеречната претстава ја образуваат количниците, запишани по редоследот кој го налага алгоритамот.
На пример, за да го претвориме бројот 125<sub>10</sub> во осмеречен број:
:125 / 8^2 = 1
:125 − ((8^2)*1) = 61
:61 / 8^1 = 7
:61 − ((8^1)*7) = 5
Затоа, 125<sub>10</sub> = 175<sub>8</sub>.
Уште еден пример:
: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
Затоа, 900<sub>10</sub> = 1604<sub>8</sub>.
2.1.2 Метод на последователно множење со 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,1640625<sub>10</sub> = 0,124<sub>8</sub>.
Овие два метода може да се комбинираат за ѕработење со десетични броеви со целобројни и дробни делови, користејќи го првото за целобројниот дел, а второто за дробниот.
2.2 Од десетично во осмеречно
За да го претвориме бројот ''k'' во десетичен систем, ја применуваме формулата што ја карактеризира неговата претстава на основа 8:
:<math>k = \sum_{i=0}^n \left( a_i\times 8^i \right).</math>
Во оваа формула, ''a<sub>i</sub>'' е претворање на подеинечна осмеречна цифра, каде ''i'' е бројот на цифрата (броејќи од 0 за најдесната цифра).
Пример: го претвораме бројот 764<sub>8</sub> во десетичен број:
:764<sub>8</sub> = 7 x 8² + 6 x 8¹ + 4 x 8° = 448 + 48 + 4 = 500<sub>10</sub>
Двоцифрените осмеречни броеви се множат со првата цифра со 8, па ја додаваме втората и го добиваме збирот.
Пример: 65<sub>8</sub> = 6x8 + 5 = 53<sub>10</sub>
2.3 Од осмеречно во двоично
Ако сакаме да претвориме од осмеречен во двоични систем, ја заменуваме секоја осмеречна цифра со нејзината двоична претстава.
Пример: го претвораме бројот 51<sub>8</sub> во двоичен број:
:5<sub>8</sub> = 101<sub>2</sub>:1<sub>8</sub> = 001<sub>2</sub>
Затоа, 51<sub>8</sub> = 101 001<sub>2</sub>.
2.4 Од двоично во осмеречно
Оваа постапка е обратна на претходниот алгоритам. Двоичните цифри се ставаат во групи од три, почнувајќи од децималната запирка, и продолжуваат десно и лево. Потоа додаваме почетни нули (или завршни нули десно од децималната запирка) за да се пополни последната група од три цифри, ако е потребно. Потоа секое трио го заменуваме со соодветната осмеречна цифра.
На пример, го претвораме двоичниот број 1010111100 во осмеречен:
:
001, 010, 111, 100
1, 2, 7, 4
Затоа, 1010111100<sub>2</sub> = 1274<sub>8</sub>.
Го претвораме двоичниот број 11100,01001 во осмеречен:
:
011, 100, ., 010, 010
3, 4, ., 2, 2
Затоа, 11100,01001<sub>2</sub> = 34,22<sub>8</sub>.
2.5 Од осмеречно во шеснаесетеречено
Ова претворање се врши во два чекора, користејќи го двоичниот систем како помошна основа. осмеречното се претвора во двоично, а потоа двоичното во шеснаесетеречно, разделувајќи ги цифрите во групи од по четири и секоја од нив ќе соодветствува на шеснаесетеречена цифра.
На пример, го претвораме осмеречниот број 1057 во шеснаесетеречен:
:Во двоично:
:
1, 0, 5, 7
001, 000, 101, 111
:потоа шеснаесетеречно:
:
0010, 0010, 1111
2, 2, F
Затоа, 1057<sub>8</sub> = 22F<sub>16</sub>.
2.6 Од шеснаесетеречно во осмеречно
Претходниот алгоритам се применува на обратен начин.
3 Поврзано
* Октет (информатика)
* Двоичен броен систем
* Шеснаесетеречен броен систем
* Десетичен броен систем