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

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

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

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

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

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

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

 Во Европа 

Во 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“ итн. Броевите со согласки едноподруго се изговараат со самогласни гласови помеѓу нив според посебно правило.Donald Knuth, The Art of Computer Programming

 Во информатиката 
осмеречниот систем понекогаш наоѓа примена во информатиката наместо шеснаесетеречниот систем, во поново време најчесто заедно со податотечни дозволи во системите од видот 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.ECMAScript V издание: http://www.ecma-international.org/publications/files/drafts/tc39-2009-025.pdfPerl 6: http://svn.pugscode.org/pugs/docs/Perl6/Spec/S02-bits.pod Python 3: http://docs.python.org/3.1/reference/lexical_analysis.html#literals

осмеречните броеви што се користат во некои програмски јазици (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:

Во оваа формула, 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 во осмеречен:

{| border="1" cellspacing="0" cellpadding="4"
|- align="center"
| 001 || 010 || 111 || 100
|- align="center"
| 1 || 2 || 7 || 4
|}

Затоа, 10101111002 = 12748.

Го претвораме двоичниот број 11100,01001 во осмеречен:

{| border="1" cellspacing="0" cellpadding="4"
|- align="center"
|  011 || 100||  .  || 010 || 010
|- align="center"
| 3 || 4 ||  .  || 2 || 2 
|}

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

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

На пример, го претвораме осмеречниот број 1057 во шеснаесетеречен:

Во двоично:
{| border="1" cellspacing="0" cellpadding="4"
|- align="center"
| 1 || 0 || 5 || 7
|- align="center"
| 001 || 000 || 101 || 111
|}

потоа шеснаесетеречно:
{| border="1" cellspacing="0" cellpadding="4"
|- align="center"
| 0010 || 0010 || 1111
|- align="center"
| 2 || 2 || F
|}

Затоа, 10578 = 22F16.

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

 Поврзано 
 Октет (информатика)
 Двоичен броен систем
 Шеснаесетеречен броен систем
 Десетичен броен систем

 Наводи 

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

Категорија:Сметачка аритметика
Категорија:Бројни системи
Категорија:Положбени бројни системи