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

Од Википедија — слободната енциклопедија
Прејди на прегледникот Прејди на пребарувањето
Бројни системи кај разни народи и култури
Индоарапски броеви
Западноарапски
Источноарапски
Индиско семејство
Бурмански
Кмерски
Монголски
Тјаландски
Источноазиски броеви
Јапонски
Кинески
Суџојски
Корејски
Виетнамски
Стапчиња
Азбучни броеви
Абџадски
Арјабатини
Ерменски
Етиопски
Грчки
Кирилични
Еврејски
Други системи
Егејски
Атички
Вавилонски
Брамански
Египетски
Етрурски
Ескимски
Мајански
Кипу
Римски
Поле со урни
Положбени системи по основа
Десетични (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. На пример:

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

Со горенаведените пресметки во десетичен систем можеме да увидиме зошто 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:

Во оваа формула, 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 - броен систем што овозможуа проста визуелно пресметување во осмеречен систем (англиски)