Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

Восьмеричная система счисления , или октябрь для краткости, является базовой системой -8 числа, и используют цифры от 0 до 7. Восьмеричных цифр могут быть изготовлены из двоичных цифр с помощью группировки последовательных двоичных разрядов в группы по трем (начиная справа). Например, двоичное представление для десятичного числа 74 - 1001010. Два нуля могут быть добавлены слева: (00) 1 001 010 , что соответствует восьмеричным цифрам 1 1 2 , что дает восьмеричное представление 112.

В десятичной системе каждый десятичный разряд представляет собой степень десяти. Например:

В восьмеричной системе каждое место - это степень восьми. Например:

Выполнив вышеприведенные вычисления в знакомой десятичной системе, мы поймем, почему 112 в восьмеричной системе счисления равно 64 + 8 + 2 = 74 в десятичной системе счисления.

Использование [ править ]

Коренные американцы [ править ]

  • Язык Yuki в Калифорнии имеет восьмеричную систему , поскольку громкоговорители COUNT с использованием пробелов между пальцами , а не сами пальцами. [1]
  • В Pamean языки в Мексике также восьмеричную система, потому что их носители рассчитывать на суставах в кулаке. [2]

Европейцы [ править ]

  • Было высказано предположение, что реконструированное протоиндоевропейское слово для «девяти» могло быть связано со словом PIE для «нового». Основываясь на этом, некоторые предположили, что протоиндоевропейцы использовали восьмеричную систему счисления, хотя свидетельств, подтверждающих это, мало. [3]
  • В 1668 году Джон Уилкинс в «Эссе о реальном персонаже и философском языке» предложил использовать основание 8 вместо 10, «потому что способ дихотомии или двудольного разделения является наиболее естественным и легким видом деления, это число способно на это. к объединению ». [4]
  • В 1716 году король Швеции Карл XII попросил Эмануэля Сведенборгаразработать систему счисления, основанную на 64 вместо 10. Сведенборг, однако, утверждал, что для людей с меньшим интеллектом, чем король, такая большая база будет слишком трудной, и вместо этого предложил 8 в качестве основы. В 1718 году Сведенборг написал (но не опубликовал) рукопись: «En ny rekenkonst som om vexlas wid Thalet 8 i stelle then wanliga wid Thalet 10» («Новая арифметика (или искусство счета), которая изменяется в цифре 8 вместо обычный у № 10 "). Цифры 1-7 там обозначаются согласными l, s, n, m, t, f, u (v), а ноль - гласной o. Таким образом, 8 = "lo", 16 = "so", 24 = "no", 64 = "loo", 512 = "looo" и т. Д. Числа с последовательными согласными произносятся с гласными звуками между ними в соответствии со специальным правилом. [5]
  • Написав под псевдонимом «Hirossa Ap-Iccim» в The Gentleman's Magazine (Лондон) в июле 1745 года, Хью Джонс предложил восьмеричную систему для британских монет, мер и весов. "Принимая во внимание, что разум и удобство указывают нам на единый стандарт для всех величин; который я назову грузинским стандартом ; и это только разделение каждого целого числа каждого вида на восемь равных частей, а каждую часть снова на 8 реальных или мнимых частиц, насколько это необходимо. Ибо все народы повсеместно считают десятками(первоначально вызвано количеством цифр на обеих руках), но 8 - гораздо более полное и простое число; поскольку она делится на две половины, четверть и половину четверти (или единица) без фракции, из которых подразделение десять является неспособным .... «В более позднем трактате о вычислении Octave (1753) Джонс пришел к выводу:» Арифметика по октавам кажется наиболее согласуется с природой вещей и поэтому может называться естественной арифметикой в ​​отличие от того, что используется сейчас десятилетиями; которую можно назвать искусственной арифметикой » [6].
  • В 1801 году Джеймс Андерсон раскритиковал французов за то, что они основали метрическую систему на десятичной арифметике. Он предложил основание 8, для которого он ввел термин восьмеричный . Его работа была задумана как развлекательная математика, но он предложил чисто восьмеричную систему мер и весов и заметил, что существующая система английских единиц уже была в значительной степени восьмеричной системой. [7]
  • В середине 19 века Альфред Б. Тейлор пришел к выводу, что «наша восьмеричная система счисления с основанием 8, таким образом, вне всякого сравнения, является« наилучшей из возможных »для арифметической системы». Предложение включало графическое обозначение цифр и новые названия чисел, предлагая считать « un , du , the , fo , pa , se , ki , unty , unty-un , unty-du » и т. Д. с последовательными кратные восьми именем " unty , долг , thety , Фотий , пати, Сеты , Kity и под «. Так, например, число 65 (101 в восьмеричной системе ) будет говориться в восьмеричной , как под-ип . [8] [9] Тейлор также переизданный некоторые из работ Сведенборга на восьмеричном как приложение к цитированные выше публикации.

В компьютерах [ править ]

Octal стал широко использоваться в вычислениях, когда такие системы, как UNIVAC 1050 , PDP-8 , ICL 1900 и мэйнфреймы IBM, использовали 6-битные , 12-битные , 24-битные или 36-битные слова. Восьмеричный был идеальным сокращением двоичного кода для этих машин, потому что размер их слова делится на три (каждая восьмеричная цифра представляет три двоичных цифры). Таким образом, две, четыре, восемь или двенадцать цифр могут кратко отображать целое машинное слово . Это также сокращает расходы за счет использования трубок Nixie , семисегментных дисплеев и калькуляторов.для использования на консолях оператора, где двоичные дисплеи были слишком сложными для использования, десятичные дисплеи требовали сложного оборудования для преобразования системы счисления , а шестнадцатеричные дисплеи требовались для отображения большего количества цифр.

Однако все современные вычислительные платформы используют 16-, 32- или 64-битные слова, которые далее делятся на восьмибитные байты.. В таких системах потребуются три восьмеричных цифры на байт, причем наиболее значимая восьмеричная цифра представляет две двоичные цифры (плюс один бит следующего значащего байта, если таковой имеется). Восьмеричное представление 16-битного слова требует 6 цифр, но наиболее значимая восьмеричная цифра представляет (весьма неэлегантно) только один бит (0 или 1). Это представление не дает возможности легко прочитать самый значимый байт, потому что он размазан по четырем восьмеричным цифрам. Поэтому сегодня в языках программирования чаще используется шестнадцатеричный код, поскольку две шестнадцатеричные цифры точно определяют один байт. На некоторых платформах с размером слова степень двойки все еще есть подслова инструкций, которые легче понять, если они отображаются в восьмеричном формате; это включает в себя семейство PDP-11 и Motorola 68000. Современная повсеместная архитектура x86 также относится к этой категории, но восьмеричная система редко используется на этой платформе, хотя некоторые свойства двоичного кодирования кодов операций становятся более очевидными при отображении в восьмеричном формате, например, байт ModRM, который делится на поля размером 2, 3 и 3 бита, поэтому восьмеричные числа могут быть полезны при описании этих кодировок. До появления ассемблеров некоторые программисты вручную кодировали программы в восьмеричном формате; например, Дик Уиппл и Джон Арнольд написали Tiny BASIC Extended прямо в машинном коде, используя восьмеричный код. [10]

Восьмеричное число иногда используется в вычислениях вместо шестнадцатеричного, возможно, наиболее часто в наше время в сочетании с правами доступа к файлам в системах Unix (см. Chmod ). Его преимущество состоит в том, что он не требует дополнительных символов в виде цифр (шестнадцатеричная система счисления - основание 16 и, следовательно, требует шести дополнительных символов помимо 0–9). Он также используется для цифровых дисплеев.

В языках программирования восьмеричные литералы обычно обозначаются множеством префиксов , включая цифру 0 , буквы o или q , комбинацию цифр и букв 0o или символ & [11] или $ . В соглашении Motorola к восьмеричным числам добавляется префикс @ , тогда как маленькая (или заглавная [12] ) буква o [12] или q [12] добавляется в качестве постфикса в соответствии с соглашением Intel . [13] [14] ВПараллельная DOS , Многопользовательские DOS и РЕАЛЬНЫЕ / 32 , а также в DOS Plus и DR-DOS различные переменные окружения , такие как $ ЦБС , $ ON , $ OFF , $ HEADER или $ FOOTER поддерживают \ NNN восьмеричное число обозначений, [15] [16 ] [17] и DR-DOS DEBUG также использует \ для префикса восьмеричных чисел.

Например, литерал 73 (основание 8) может быть представлен как 073 , o73 , q73 , 0o73 , \ 73 , @ 73 , & 73 , $ 73 или 73o на разных языках.

Новые языки отказались от префикса 0 , поскольку десятичные числа часто представляются с ведущими нулями. Префикс q был введен, чтобы избежать ошибочного приема префикса o за ноль, в то время как префикс 0o был введен, чтобы не начинать числовой литерал с буквенного символа (например, o или q ), поскольку это может привести к путанице литерала с имя переменной. Префикс 0o также следует модели, установленной префиксом 0x, используемым для шестнадцатеричных литералов в языке C ; он поддерживается Haskell , [18] OCaml , [19] Python версии 3.0, [20] Raku , [21] Ruby , [22] Tcl версии 9, [23] PHP версии 8.1 [24], и предполагается, что он будет поддерживаться ECMAScript 6 [25] ( префикс 0 первоначально обозначал базу 8 в JavaScript, но мог вызвать путаницу [26], поэтому он не одобрялся в ECMAScript 3 и был исключен в ECMAScript 5 [27] ).

Восьмеричные числа, которые используются в некоторых языках программирования (C, Perl , PostScript …) для текстового / графического представления байтовых строк, когда некоторые байтовые значения (не представлены на кодовой странице, не графические, имеют особое значение в текущем контексте или нежелательны по иным причинам) должно быть экранировано как \ nnn . Восьмеричное представление может быть особенно удобно с байтами не-ASCII UTF-8 , который кодирует группы из 6 бит, и где любой начальный байт имеет восьмеричное значение \ 3nn, а любой байт продолжения имеет восьмеричное значение \ 2nn .

Octal также использовался для вычислений с плавающей запятой в компьютерах Ferranti Atlas (1962), Burroughs B5500 (1964), Burroughs B5700 (1971), Burroughs B6700 (1971) и Burroughs B7700 (1972).

В авиации [ править ]

Приемоответчики в самолетах передают код , выраженный четырехзначным числом, когда их опрашивает наземный радар. Этот код используется для различения разных самолетов на экране радара.

Преобразование между базами [ править ]

Преобразование десятичного числа в восьмеричное [ править ]

Метод последовательного евклидова деления на 8 [ править ]

Чтобы преобразовать целые десятичные дроби в восьмеричные, разделите исходное число на максимально возможную степень 8 и разделите остатки на последовательно меньшие степени 8, пока степень не станет 1. Восьмеричное представление формируется частными, записанными в порядке, порожденном алгоритм. Например, чтобы преобразовать 125 10 в восьмеричное:

125 = 8 2 × 1 + 61
61 = 8 1 × 7 + 5
5 = 8 0 × 5 + 0

Следовательно, 125 10 = 175 8 .

Другой пример:

900 = 8 3 × 1 + 388
388 = 8 2 × 6 + 4
4 = 8 1 × 0 + 4
4 = 8 0 × 4 + 0

Следовательно, 900 10 = 1604 8 .

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

Чтобы преобразовать десятичную дробь в восьмеричную, умножьте ее на 8; целая часть результата - это первая цифра восьмеричной дроби. Повторите процесс с дробной частью результата, пока она не станет нулевой или находится в пределах допустимых ошибок.

Пример: преобразовать 0,1640625 в восьмеричное:

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

Следовательно, 0,1640625 10 = 0,124 8 .

Эти два метода можно комбинировать для обработки десятичных чисел как с целыми, так и с дробными частями, используя первый для целой части, а второй - для дробной части.

Метод последовательного дублирования [ править ]

Чтобы преобразовать целые десятичные числа в восьмеричные, поставьте перед числом "0". Выполните следующие шаги, пока цифры остаются с правой стороны системы счисления: удвойте значение слева от системы счисления, используя восьмеричные правила, переместите точку счисления на одну цифру вправо, а затем поместите удвоенное значение под текущим значение так, чтобы точки системы счисления совпадали. Если перемещенная точка системы счисления пересекает цифру 8 или 9, преобразуйте ее в 0 или 1 и добавьте перенос к следующей левой цифре текущего значения. Добавьте восьмерично эти цифры слева от системы счисления и просто опустите эти цифры вправо без изменений.

Пример:

 0,4 9 1 8 десятичное значение +0 --------- 4,9 1 8 +1 0 -------- 6 1,1 8 +1 4 2 -------- 7 5 3,8 +1 7 2 6 -------- 1 1 4 6 6. восьмеричное число

Восьмеричное преобразование в десятичное [ править ]

Чтобы преобразовать число k в десятичное, используйте формулу, определяющую его представление по основанию 8:

В этой формуле a i - это преобразовываемая отдельная восьмеричная цифра, где i - позиция цифры (считая от 0 для самой правой цифры).

Пример: преобразовать 764 8 в десятичное:

764 8 = 7 × 8 2 + 6 × 8 1 + 4 × 8 0 = 448 + 48 + 4 = 500 10

Для двузначных восьмеричных чисел этот метод сводится к умножению первой цифры на 8 и добавлению второй цифры для получения общей суммы.

Пример: 65 8 = 6 × 8 + 5 = 53 10

Метод последовательного дублирования [ править ]

Чтобы преобразовать восьмеричные числа в десятичные, поставьте перед числом "0". Выполните следующие шаги, пока цифры остаются с правой стороны системы счисления: удвойте значение слева от системы счисления, используя десятичные правила, переместите точку счисления на одну цифру вправо, а затем поместите удвоенное значение под текущим значение так, чтобы точки системы счисления совпадали. Вычтите десятичные числа те цифры слева от системы счисления и просто опустите эти цифры вправо без изменений.

Пример:

 0,1 1 4 6 6 восьмеричное значение -0 ----------- 1,1 4 6 6 - 2 ---------- 9,4 6 6 - 1 8 ---------- 7 6,6 6 - 1 5 2 ---------- 6 1 4,6 - 1 2 2 8 ---------- 4 9 1 8. десятичное значение

Восьмеричное преобразование в двоичное [ править ]

Чтобы преобразовать восьмеричное число в двоичное, замените каждую восьмеричную цифру ее двоичным представлением.

Пример: преобразовать 51 8 в двоичную форму:

5 8 = 101 2
1 8 = 001 2

Таким образом, 51 8 = 101 001 2 .

Преобразование двоичного числа в восьмеричное [ править ]

Процесс происходит в обратном порядке по сравнению с предыдущим алгоритмом. Двоичные цифры сгруппированы по тройкам, начиная с младшего бита и переходя влево и вправо. Добавьте начальные нули (или конечные нули справа от десятичной точки), чтобы заполнить последнюю группу из трех, если необходимо. Затем замените каждое трио эквивалентной восьмеричной цифрой.

Например, преобразуйте двоичное число 1010111100 в восьмеричное:

Следовательно, 1010111100 2 = 1274 8 .

Преобразование двоичного числа 11100.01001 в восьмеричное:

Следовательно, 11100.01001 2 = 34,22 8 .

Восьмеричное преобразование в шестнадцатеричное [ править ]

Преобразование выполняется в два этапа с использованием двоичного кода в качестве промежуточной базы. Восьмеричное число преобразуется в двоичное, а затем двоичное в шестнадцатеричное, цифры группируются по четыре, каждая из которых соответствует шестнадцатеричной цифре.

Например, преобразовать восьмеричное число 1057 в шестнадцатеричное:

В бинарный:
затем в шестнадцатеричный:

Следовательно, 1057 8 = 22F 16 .

Преобразование шестнадцатеричного числа в восьмеричное [ править ]

Преобразование шестнадцатеричного числа в восьмеричное происходит путем преобразования сначала шестнадцатеричных цифр в 4-битные двоичные значения, а затем перегруппировки двоичных битов в 3-битные восьмеричные цифры.

Например, для преобразования 3FA5 16 :

В бинарный:
затем в восьмеричный:

Следовательно, 3FA5 16 = 37645 8 .

Реальные числа [ править ]

Дроби [ править ]

Из-за того, что множители только два, многие восьмеричные дроби имеют повторяющиеся цифры, хотя они, как правило, довольно просты:

Иррациональные числа [ править ]

В таблице ниже приведены разложения некоторых распространенных иррациональных чисел в десятичной и восьмеричной системе.

См. Также [ править ]

  • Форматы компьютерной нумерации
  • Восьмеричные игры , система нумерации игр , используемая в комбинаторной теории игр
  • Split octal , 16-битное восьмеричное представление, используемое Heath Company, DEC и другими
  • Код Squawk , 12-битное восьмеричное представление кода Гиллхэма
  • Слоговое восьмеричное , восьмеричное представление 8-битных слогов, используемых English Electric

Ссылки [ править ]

  1. ^ Ашер, Марсия (1992). «Этноматематика: мультикультурный взгляд на математические идеи». Журнал математики колледжа . 23 (4): 353–355. DOI : 10.2307 / 2686959 . JSTOR  2686959 .
  2. Перейти ↑ Avelino, Heriberto (2006). «Типология систем счисления Пейма и пределы Мезоамерики как лингвистической области» (PDF) . Лингвистическая типология . 10 (1): 41–60. DOI : 10,1515 / LINGTY.2006.002 .
  3. ^ Зима, Вернер (1991). «Некоторые мысли об индоевропейских цифрах» . В Гвозданович, Ядранка (ред.). Индоевропейские цифры . Тенденции в лингвистике. 57 . Берлин: Мутон де Грюйтер. С. 13–14. ISBN 3-11-011322-8. Проверено 9 июня 2013 .
  4. ^ Уилкинс, Джон (1668). Очерк реального персонажа и философского языка . Лондон. п. 190 . Проверено 8 февраля 2015 .
  5. ^ Дональд Кнут , Искусство компьютерного программирования
  6. ^ См. HR Phalen, «Хью Джонс и октавные вычисления», The American Mathematical Monthly 56 (август – сентябрь 1949 г.): 461-465.
  7. ^ Джеймс Андерсон, О восьмеричной арифметике [название появляется только в заголовках страниц], Отдых в сельском хозяйстве, естествознании, искусстве и другой литературе , Vol. IV, № 6 (февраль 1801 г.), Т. Бенсли, Лондон; страницы 437-448.
  8. ^ Альфред Б. Тейлор, Отчет о весах и мерах , Фармацевтическая ассоциация, 8-я ежегодная сессия, Бостон, 15 сентября 1859 г. См. Страницы 48 и 53.
  9. ^ Альфред Б. Тейлор, Восьмеричная система счисления и ее применение к системе мер и весов, Proc. Амер. Фил. Soc. Том XXIV , Филадельфия, 1887 г .; страницы 296-366. См. Страницы 327 и 330.
  10. ^ «Таблица кодов ТБ». Журнал доктора Добба по компьютерной гимнастике и ортодонтии, «Бегущий свет без избыточного байта» . 1 (1). Декабрь 1975 г.
  11. ^ Корпорация Microsoft (1987). «Константы, переменные, выражения и операторы» . Руководство пользователя GW-BASIC . Проверено 12 декабря 2015 .
  12. ^ a b c "2.4.1 Числовые константы". CP / M-86 - Операционная система - Руководство программиста (PDF) (3-е изд.). Пасифик Гроув, Калифорния, США: Цифровые исследования . Январь 1983 [1981]. п. 9. Архивировано (PDF) из оригинала 27.02.2020 . Проверено 27 февраля 2020 . [1] (1 + viii + 122 + 2 страницы)
  13. ^ Кювелер, Герд; Швох, Дитрих (2013) [1996]. Arbeitsbuch Informatik - eine praxisorientierte Einführung in die Datenverarbeitung mit Projektaufgabe (на немецком языке). Vieweg-Verlag, перепечатка: Springer-Verlag. DOI : 10.1007 / 978-3-322-92907-5 . ISBN 978-3-528-04952-2. 978-3-32292907-5 . Проверено 5 августа 2015 .
  14. ^ Кювелер, Герд; Швох, Дитрих (2007-10-04). Informatik für Ingenieure und Naturwissenschaftler: PC- und Mikrocomputertechnik, Rechnernetze (на немецком языке). 2 (5-е изд.). Vieweg, перепечатка: Springer-Verlag. ISBN 978-3-83489191-4. 978-3-83489191-4 . Проверено 5 августа 2015 .
  15. ^ Пол, Матиас Р. (1997-07-30). NWDOS-TIPs - Советы и приемы для Novell DOS 7, с подробным описанием, ошибками и обходными путями . MPDOSTIP . Выпуск 157 (на немецком языке) (3-е изд.). Архивировано 4 ноября 2016 года . Проверено 6 августа 2014 .(NB. NWDOSTIP.TXT - это всеобъемлющая работа по Novell DOS 7 и OpenDOS 7.01 , включая описание многих недокументированных функций и внутренних компонентов. Это часть еще большей MPDOSTIP.ZIPколлекции автора, поддерживаемой до 2001 года и распространяемой на многих сайтах в то время. Предоставленная ссылка указывает на старую версию NWDOSTIP.TXTфайла, преобразованную в HTML .)
  16. ^ Пол, Матиас Р. (26 марта 2002). "Обновленный CLS размещен" . Список рассылки freedos-dev. Архивировано 27 апреля 2019 года . Проверено 6 августа 2014 .
  17. ^ Интерактивная документация CCI Multiuser DOS 7.22 GOLD . Concurrent Controls, Inc. (CCI). 1997-02-10. HELP.HLP.
  18. ^ Лексическая структура Haskell 98
  19. ^ OCaml: 7.1 Лексические соглашения
  20. ^ Python 3: https://docs.python.org/3.1/reference/lexical_analysis.html#integer-literals
  21. ^ Perl 6: http://perlcabal.org/syn/S02.html#Radix_markers. Архивировано 31 октября 2014 г. на Wayback Machine.
  22. ^ RubySpec: https://github.com/kostya/rubyspec/blob/master/core/string/to_i_spec.rb [ постоянная мертвая ссылка ]
  23. ^ Tcl: http://wiki.tcl.tk/498
  24. ^ PHP.Watch - PHP 8.1: явная восьмеричная числовая нотация https://php.watch/versions/8.1/explicit-octal-notation
  25. ^ Черновик 6-го издания ECMAScript: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-literals-numeric-literals. Архивировано 16 декабря 2013 г. на Wayback Machine.
  26. ^ "Почему система счисления для parseInt в JavaScript по умолчанию равна 8?" . Переполнение стека . 2011-04-08.
  27. ^ "ParseInt ()" , Mozilla Developer Network (MDN) , если входная строка начинается с "0" (ноль), предполагается , что Radix быть 8 (восьмеричное) или 10 (десятичное). Выбор системы счисления зависит от реализации. ECMAScript 5 поясняет, что следует использовать 10 (десятичное), но пока не все браузеры поддерживают это.

Внешние ссылки [ править ]

  • Octomatics - это система счисления, обеспечивающая простой визуальный расчет в восьмеричном формате .
  • Восьмеричный преобразователь выполняет двунаправленное преобразование между восьмеричной и десятичной системами.