Осмеречен броен систем
Осмеречен броен систем (октален броен систем) броен систем со основа 8 кој ги користи бројките од 0 до 7. Бројките можат да се направат од двоични (бинарни) бројки разделување на последователните двоични цифри во групи од по три бројки (почнувајќи од десно). На пример, двоичната претстава за десетичниот број 74 е 1001010, што може да се групира во (00)1 001 010 — така, осмеречната претстава ќе биде 112.
Бројни системи кај разни
народи и култури | |
---|---|
Индоарапски броеви | |
Западноарапски • Источноарапски | |
Бенгалски • Гуџаратски • Гурмухски • Деваганарски (Индиски) • Синхалски • Тамилски | |
Балиски • Бурмански • Ѕонгкански (Бутански) • Јавански • Кмерски • Лаоски • Монголски • Тајландски | |
Источноазиски броеви
| |
Виетнамски Јапонски Кинески (Суџојски) |
Корејски Стапчиња Хокиенски |
Азбучни броеви
| |
Абџадски Арјабатини Гиски (Етиопски) Грузиски Грчки |
Ерменски Кирилични Римски Хебрејски |
Други системи
| |
Атички Брамански Вавилонски Глаголични Егејски Египетски Етрурски Инуитски |
Кипу Кхаростенски Мајански Муискански Поле со урни Праисториски Чувашки |
Десетични (10) | |
1, 2, 3, 4, 5, 6, 8, 12, 16, 20, 30, 36, 60 повеќе… | |
Во десетичниот (декаден) систем, секое децимално место е основа 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.
Од шеснаесетеречно во осмеречно
уредиПретходниот алгоритам се применува на обратен начин.
Поврзано
уредиНаводи
уреди- ↑ Avelino, Heriberto (2006). „The typology of Pame number systems and the limits of Mesoamerica as a linguistic area“ (PDF). Linguistic Typology. 10: 41–60. doi:10.1515/LINGTY.2006.002.
- ↑ Марсија Апер. „Етноматематика: Мултикултурен поглед на математичките идеи“. The College Mathematics Journal. Посетено на 13 април 2007. (англиски)
- ↑ Donald Knuth, The Art of Computer Programming
- ↑ ECMAScript V издание: http://www.ecma-international.org/publications/files/drafts/tc39-2009-025.pdf
- ↑ Perl 6: http://svn.pugscode.org/pugs/docs/Perl6/Spec/S02-bits.pod Архивирано на 4 јули 2020 г.
- ↑ Python 3: http://docs.python.org/3.1/reference/lexical_analysis.html#literals
Надворешни врски
уреди- Претворач за десетични/осмеречни бројки (JavaScript, ОЈЛ) (англиски)
- Octomatics - броен систем што овозможуа проста визуелно пресметување во осмеречен систем (англиски)