avva: (Default)
[personal profile] avva
Меня спросили, что такое восьмеричные числа. Я сделал попытку объяснить как можно более простым языком, так, чтобы было понятно не-математикам и не-программистам. Это вышло длиннее, чем позволяет коммент, поэтому выношу в отдельную запись. Если есть замечания или вопросы — пожалуйста.

Для тех, кто знаком с философией математики: я не стыжусь откровенного платонизма, которым пропитано это объяснение. По-моему, только так и можно объяснять для новичков — вне зависимости от того, веришь в него на самом деле или нет. Формализм хорош в тех случаях, когда уже знаешь, о чём идёт речь.


Про восьмеричные числа.

Прежде всего, строго говоря, правильно "восьмеричная запись" или "десятеричная запись" итп., потому что числа везде одинаковые. Но так уж привыкли говорить.

Есть много разных систем записи чисел с помощью значков (на бумаге, на экране компьютера итп.); они делятся прежде всего на позиционные и непозиционные. В непозиционных системах есть разные значки для разных чисел, их можно писать вместе, и при этом значение всех значков складывается; но "число" каждого значка не меняется от порядка, в котором они стоят. Например, в римской системе можно записать XV, и это будет 15; но можно написать и VX, и это тоже будет 15. А в привычной нам позиционной системе нельзя переставить местами 15 и 51 - получатся разные числа. Римская система, однако, не полностью непозиционная: заметьте, что IX означает 9, а XI - 11. Т.е. для некоторых значков в ней важен относительный порядок друг от друга.

Самые распостранённые в наше время системы записи чисел - позиционные "арабские", и из них самая распостранённая - десятеричная. Она названа так потому, что значение цифр в числе увеличивается по степеням десятки: например, 372 это 3*100 + 7*10 + 2. Самая правая цифра в числе обозначает "самое себя", вторая с конца - цифра десяток, т.е. обозначает, сколько десяток есть в числе, третья справа - цифра сотен итп.

Мы настолько привыкли к этой системе, что для нас обычно десятеричная запись числа и само число совпадают друг с другом в уме. Т.е., скажем, для нас "число пятнадцать" - это "15", а "XV" - это относительно редкий и необычный способ записи числа 15 римскими цифрами. Но на самом деле "XV" и "15" - равноправны, и то и другое - способ записи какими-то значками абстрактного числа "пятнадцать". Впрочем, "пятнадцать" - тоже всего лишь ещё один способ записи какими-то значками этого числа, как и "fifteen". Само по себе число - абстрактный объект, который можно записать множеством разных способов, просто мы настолько привыкли к десятеричной системе, что воспринимаем её в качестве "главной" в некотором смысле. Но это всего лишь сила традиции и привычки.

В основании десятеричной системы лежит число "десять"; так получилось потому, что у нас на двух руках десять пальцев. Если мы возьмём вместо десяти в основание число "восемь", у нас получится другой способ записывать числа, использующий только восемь цифр: 0,1,2,3,4,5,6,7 (как десятеричная система использует десять цифр 0,1,2,3,4,5,6,7,8,9). Его можно изобразить так:

0 - ноль
1 - один
2 - два
3 - три
4 - четыре
5 - пять
6 - шесть
7 - семь
10 - восемь
11 - девять
12 - десять
13 - одиннадцать
14 - двенадцать
15 - тринадцать
16 - четырнадцать
17 - пятнадцать
20 - шестнадцать
......

Всякий раз, как в каком-то разряде мы доходим до "последней цифры" 7 (в восьмеричной системе), мы переходим на следующем шаге в 0 и сдвигаем на единицу больше следующий разряд. Я специально написал справа названия чисел словами, а не десятеричными цифрами, чтобы не так легко было запутаться. Число в восьмеричной системе можно разбить на разряды так же, как число в десятеричной системе, но разряды в нём будут нести в себе степени восьмёрки, а не десятки:

372 = 3 * сто + 7 * десять + 2

564 = 5 * шестьдесят четыре + 6 * восемь + 4

372 в десятеричной записи и 564 в восьмеричной записи - это одно и то же число, в чём легко убедиться, выполнив описанное выше разложение для 564 как вычисление в привычной десятеричной системе: 5*64+6*8+4 = 372. Запись разная, а число одно и то же, это важно понять.

А если бы для нас привычной была бы восьмеричная система, и мы бы всё обычно делали в ней, то нам было бы легче удостовериться в равенстве этих двух представлений, выполнив разложение 372 в десятичной системе в качестве вычисления в восьмеричной: 3*сто + 7*10 + 2 = (учитывая, что десять в восьмеричной системе записывается как 12, а сто как 144): 3*144 + 7*12 + 2 = 454 + 106 + 2 = 564 (всё в восьмеричной системе).

Все обычные действия с числами, типа умножения столбиком, деления столбиком, сложения-вычитания итп. можно производить с восьмеричными (или двоичными, или двадцатеричными) числами с той же лёгкостью, что и с десятеричными — с той же лёгкостью в принципе; но на практике нам, конечно, намного легче работать в привычной десятеричной системе, чем в любой другой.

Современные компьютеры все записывают информацию с помощью битов, где бит - единица информации, могущая принимать только два разных значения: 0 или 1. Это устроено так потому, что так легче всего представлять информацию в виде элетрического сигнала; например, есть ток - означает 1, а нет тока - означает 0 (или разные уровни напряжения, или наличие/отсутствие электрического заряда, итп.). Учитывая эту особенность компьютеров, оказалось, что легче и эффективнее всего представлять числа в них с помощью двоичной записи, где каждая двоичная "цифра" обозначается с помощью отдельного бита, и каждый разряд в двоичной записи несёт свою степень двойки. Например,

100010 = тридцать четыре, т.к. это 1*(два в пятой степени) + 0*(два в четвёртой степени) + 0*(два в третьей степени) + 0*(два в квадрате) + 1*(два в первой степени) + 0

Но кроме двоичной записи, занимающей много места, логично также использовать любую запись с основой, являющейся степенью двойки, например, восьмеричной (8 = два в третьей степени) или шестнадцатеричной (два в четвёртой степени). Это выходит потому, что при переходе из двоичной степени в восьмеричную, скажем, мы просто собираем двоичные цифры справа налево в группы по три цифры в каждой и переводим их в восьмеричные цифры от 0 до 7:

100010 = 100 010 = 4 2 = 42 (в восьмеричной записи), т.е. 4*8+2 = 34 (в десятеричной записи)

или при переходе из двоичной в шестнадцатеричную, группируем четвёрками:

100010 = 10 0010 = 22 (в 16-ричной записи) = 2*16+2 = 34 (в десятеричной записи).

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

564
5 --> 101
6 --> 110
4 --> 100

564 ---> 101 110 100 = 101110100

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

Из-за всех этих причин восьмеричные и шестнадцатеричные числа и стали столь часто использовать во всём, что связано с компьютерами.
From: [identity profile] trurle.livejournal.com
Дело не только в легкости представления бита в виде сигнала.
Как показал Винер, двоичная запись в некотором смысле самая экономная.

Date: 2003-10-13 03:36 am (UTC)
From: [identity profile] rippenbiest.livejournal.com
Все правильно, и придраться не к чему, я бы только еще где-нибудь подчеркнул, что речь идет о натуральных числах.
From: [identity profile] p-k.livejournal.com
С детства запомнилось, что экономнее всего троичная (так как 3 ближе к е, чем 2). А вот почему е, вылетело из головы совершенно.
From: [identity profile] monan.livejournal.com
jj - user meshulash (http://www.livejournal.com/users/meshulash/) matematicheskiy site pishet

Date: 2003-10-13 03:55 am (UTC)
From: [identity profile] mama-ari.livejournal.com
Формализм хорош в тех случаях, когда уже знаешь, о чём идёт речь.
Да!!!
Как учившийся и учивший, и школьников и дипломников, соглашусь всем сердцем. Это одна из болевых точек. Формализм часто связан с полнотой, вроде бы призван не оставить дырок в обоснованиях. И не допустить того, чтобы частные случаи заслонили и запомнились вместо общего. И в итоге попадаешь в ловушку, рассказывая нечто слушателю впервые: начинаешь оговариваться, упоминая существование всех возможных случаев и исключений, всё обосновывать и доказывать - и видишь с ужасом, что понимание из глаз ушло, "потеряли картинку". Начинаешь сначала объяснять внятно, "о чем речь", вроде бы энтузиазм у слушателя налицо, понимание есть, а потом, при проверке, обнаруживаешь, что он "забывает о существовании отрицательного квадратного корня". А идти "двумя проходами материала", сначала понимание, потом строгое обоснование всего, обычно некогда. Вечная ловушка, и я не знаю идеальных методов или преподавателей, всегда находящих тропинку между двумя ямами для слушателей. Да тут ещё и играет роль некоторая индивидуальность восприятия слушателей, есть те, кто лучше обучается "от примера", а есть те, кто "от системы", на всех никак не угодишь...

Date: 2003-10-13 03:56 am (UTC)
From: [identity profile] auto194419.livejournal.com
Например, в римской системе можно записать XV, и это будет 15; но можно написать и VX, и это тоже будет 15.

Римские числа - плохой пример, хоть и самый очевидный. В процитированной фразе есть ошибка. Во втором случае (VX) - это не 15, а 5. Правильно представлять непозиционную систему счисления на примере спичек, камне и т.п., но не на "римском" примере. В числе MCMXXXVIII, скажем, "С" означает не "сто", а "минус сто".
From: [identity profile] oblomov-jerusal.livejournal.com
Я тоже это помню, думаю, это из "Кванта". Думаю, e потому что это минимум x/log x. Если предположить, что цена минимального элемента памяти пропорциональна числу его состояний, для элементов с n cостояниями цена хранения числа в диапазоне 1..N будет пропорциональна log N * n/log n.

Date: 2003-10-13 04:00 am (UTC)
From: [identity profile] alickop.livejournal.com
Вроде как, в тему (http://www.livejournal.com/users/_alick_/93620.html).
From: [identity profile] p-k.livejournal.com
Ага, все точно, вспомнил. Предположение о цене, конечно, малообоснованное, но во времена декатронов казавшееся естественныи :)

Date: 2003-10-13 04:13 am (UTC)
From: [identity profile] oblomov-jerusal.livejournal.com
А вам не показалось, что вопрос был шуткой? По-моему, имелось в виду что это программистский вариант вопроса про подшипник.

Date: 2003-10-13 04:13 am (UTC)
From: [identity profile] dimaniko.livejournal.com
Если Вас просили объснить только про восьмеричную систему, то про позиционные-непозиционные системы записи - лишнее. Как минимум. Кроме "принципа действия" восьмеричной системы стоило лишь сказать о связке компъютер-двоичные-восьмеричные-шестнадцатиричные и всё. Перегружено очень.

Date: 2003-10-13 04:14 am (UTC)
From: [identity profile] avva.livejournal.com
Нет, ты неправ. VX не означало 5 никогда, а именно 15; другое дело, что в наше время так никто не пишет, но это уже как раз под влиянием главенствующей позиционной системы. Сами древние римляне, во-первых, довольно редко использовали нотацию вычитания, т.е. обычно, скажем, писали IIII, а не IV; и, во-вторых, часто ставили цофры в любом порядке, каком им хотелось, а не по убыванию. Только в средневековье сложилась традиция всегда писать знаки по убыванию, кроме тех случаев, когда они используются для вычитания.

Именно поэтому римская система, в том виде, в каком её практиковали римляне, смешанная, т.е. в основном непозиционная, за некоторыми исключениями.

Кстати, кроме спичек и камней в качестве примеров непозиционных систем подходят многие алфавитные системы записи чисел с помощью букв. Например, еврейский календарь до сих пор пишется таким образом: у нас тут две недели назад наступил новый 5764-й год, который пишется תשס"ד: буква ת "тав" 400, буква ש "шин" 300, буква ס "самех" 60, буква ד "далет" 4 ("пять тысяч" подразумевается).

Date: 2003-10-13 04:16 am (UTC)
From: [identity profile] rakshas.livejournal.com
Если этого не знать, то все равно непонятно. Например, мне кажется, что любого гуманитраия склинит на этом месте.
0 - ноль
1 - один
2 - два
3 - три
4 - четыре
5 - пять
6 - шесть
7 - семь
10 - восемь
11 - девять
12 - десять
13 - одиннадцать
14 - двенадцать
15 - тринадцать
16 - четырнадцать
17 - пятнадцать
20 - шестнадцать

А также здесь:

372 = 3 * сто + 7 * десять + 2

564 = 5 * шестьдесят четыре + 6 * восемь + 4

Потому что здесь может быть непонятно откуда взялось число 64. Может создаться впечатление, что мы умножаем первую цифру на число, состоящее из второй и третьей.

Date: 2003-10-13 04:19 am (UTC)
From: [identity profile] avva.livejournal.com
Я там до этого про степени восьмёрки написал, что они используются аналогично степеням десятки. Поэтому мне казалось, что это место будет понятно.

Хотелось бы услышать мнение каких-нибудь гуманитариев, незнакомых с восьмеричной системой счисления, о том, было ли им понятно это и другие места.

Date: 2003-10-13 04:21 am (UTC)
From: [identity profile] avva.livejournal.com
Не знаю. Там человек подписался "Механик". Почему бы ему и не спросить искренне? Я встречал инженеров и физиков, не знающих ничего про системы счисления - а зачем им?

Если для него это было шуткой, может, кому другому пригодится. Я же про подшипник не в шутку спрашивал, действительно не знал.

Date: 2003-10-13 04:27 am (UTC)
From: [identity profile] mawka.livejournal.com
ура! дошло! :-)

Спасибо.

Первое доступное (и запоминающееся - что главное) объяснение.

Date: 2003-10-13 04:29 am (UTC)
From: [identity profile] mawka.livejournal.com
ммм... я вполне подхожу под категорию любой гуманитарий... не склинило :-)

Date: 2003-10-13 04:30 am (UTC)
From: [identity profile] kidd79.livejournal.com
Вроде, все понятно.
From: [identity profile] rakshas.livejournal.com
7 в десятиричной и 7 в восьмеричной это одно и то же число?
From: [identity profile] meshulash.livejournal.com
Спасибо, солнце. Но я, правда, малось запутался во всей этой мути. Надо бы большой совет с пивом организовать.

Насчет систем исчисления, у меня лекция написанная сохранилась, из тех, которыми я студентам головы морочал. Там чуть более подробно.
From: [identity profile] rakshas.livejournal.com
Cпасибо :) Остается последний довод, что Вы знали об этом еще до прочтения записи [personal profile] avva :) Спорить я, конечно, не буду, но мне все равно кажется, что эти места написаны непонятно. [personal profile] avva, может опрос устроите по этому поводу?

Date: 2003-10-13 05:23 am (UTC)
From: [identity profile] meshulash.livejournal.com
В абзаце:
"0 - ноль
1 - один
2 - два
3 - три
..."
и далее цифры 0, 1, 2 ... лучше заменить на любые символы, не имеющие устоявшейся нотации. Для студентов, не знающих иврита, я использовал буквы еврейского алфавита, ноль обозначался 0 нулем. Тогда они получали четкое представленеи о разнице между числом (понятием) и цифрой (знаком). Когда счет в 8-ой системе с помощью букв был усвоен, я просто менял еврейские буквы на арабские цифры. Эффектно было по ходу переобозначить еврейские буквы старорусскими (аз, буки, веди...) (в цифровом отношении и принципах счета это одно и тоже).

Согласен с тем, кто указал, что упоминание о римской системе и вообще о позиционных и непозиционных системах лишнее. Здесь, раз уж речь зашла о цифрах и числах, имеет смысл говорить о символической и синкопической алгебрах, т.е. об обозначении чисел символами и об обозначении чисел сокращениями от называющих их слов.
From: [identity profile] mawka.livejournal.com
проблема в том, что мне про восьмеричную и двоичную систему объясняли много и разно, но после всех этих разговоров оставалось ощущение беспорядочно бегающих ноликов и единичек в голове, какой-то непереваренной информации и минимума смысла. Т.е. материал не _абсолютно_ новый, но толку от предыдущих объяснений было не много.

Date: 2003-10-13 05:45 am (UTC)

Date: 2003-10-13 07:07 am (UTC)
From: [identity profile] arbat.livejournal.com
Ну, как раз гуманитарию-то можно все легко объяснить. Напомнить про разницу между иероглифами и фонетическими алфавитами.
О числах я бы начал с того, что, мол, можно записывать число палочками - 1 - одна палочка, два - две и т.д. Однако - неэкономно. Поэтому, следующий шаг - заменить группу палочек на другой символ. Скажем, вместо пяти писать V. Таким образом приходим к идее записи числа при помощи набора символов. Ну, а далее - для больших чисел или надо увеличить набор символов, или начать учитывать порядок. Ну и указал бы, что все зависит от набора: если у нас 10 символов, то система - десятичная. И на закуску пояснение, что арабские числа, как и все семитское - читаются справа налево.

Date: 2003-10-13 09:41 am (UTC)
From: [identity profile] turgutmakbak.livejournal.com
В качестве примера, вот 342-173 в десятеричной и восьмеричной системе: http://wiw.org/~drz/tom.lehrer/the_year.html#math

Date: 2003-10-13 09:55 am (UTC)
From: [identity profile] flaass.livejournal.com
А вот задачка:

Берем натуральное число в восьмеричной записи, переводим в десятичную. К счастью, получается снова восьмеричная запись (т.е. нет цифр 8 и 9).
Еще раз переводим, опять повезло! И так далее.
Описать все натуральные числа, с которыми такую операцию можно проделывать бесконечно долго.

Легкая.

А если спросить про действительные из [0..1]?

Date: 2003-10-13 11:26 am (UTC)
From: [identity profile] ex-ilyavinar899.livejournal.com
Да, именно по последней причине в itoa нужны два цикла: один - определить число цифр в числе; другой - вывести эти цифры.

Date: 2003-10-13 06:13 pm (UTC)
From: (Anonymous)
Илья Циндлехт AKA oblomov_jerusal прав. Я чувствую себя виноватым. Однако, спасибо Анатолию за прекрасное изложение и всем за хорошую дискуссию. Даже зная предмет приятно было прочитать пост Анатолия.

Я действительно механик по образованию, но с восьмеричными числами программируя на Урал-2, Минск-22, М-222, БЭСМ-4 вероятно имел дело больше чем многие.

Действительно, минимальное число битов требует троичная система, и это потому, что функция достигает минимума на е. Однако, двоичная требует на только на 2 или 3 процента больше, а реализовать намного дешевле.

Как сказал однажды ilyavinarsky "Есть 10 типов людей: те, что знают двоичную систему, и те, что не знают". Не знаю сам ли он это придумал, но 1111 октября ему исполняется 11111 год. Будь здоров Илюша!

Date: 2003-10-13 10:22 pm (UTC)
From: [identity profile] zhura.livejournal.com
Ага уважаемые.
Честно пытался одолеть материал, но именно тут меня и заклинило. :(

Date: 2003-10-13 10:48 pm (UTC)
From: [identity profile] ex-ilyavinar899.livejournal.com
Нет, не сам придумал. Но спасибо, анонимус (папа?).

Date: 2003-10-13 11:02 pm (UTC)
From: (Anonymous)
Sure

Date: 2003-10-14 03:18 am (UTC)
From: [identity profile] onodera.livejournal.com
Вопрос механику: Почему в автомобиле работает мотор, но колёса не крутятся при отпущенной педали газа? А педаль газа регулирует скорость сжигания топлива или что-то иное?

Date: 2003-10-14 03:47 pm (UTC)
From: (Anonymous)
при отпущенной педали газа мотор не работает, а только крутится.
потому что, когда мотор работает, машина едет. а педаль газа регулирует скорость езды автомашины. чем больше нажмешь, тем шустрей она едет. а колеса не крутятся, потому что машина стоит на месте. у них сильное трение об асфальт. для того асфальт и кладут, что бы колеса меньше терлись. что бы их реже менять, когда сотрутся.

Date: 2003-10-14 03:52 pm (UTC)
From: (Anonymous)
ой, а как Вы имели дело с восьмеричными числами?
Расскажите, пожалуйста, поподробней, - ведь, судя по возрасту, именно в эту эпоху расцвета Минсков и Уралов и Вашего улгубления в таинства восьмеричной системы Вы получили замечательный результат ilyavinarsky.
Очень, очень интересно, ждем!

... той же монетой

Date: 2003-10-14 07:06 pm (UTC)
From: (Anonymous)
Ну вот, мне дали сдачу той же монетой: я сижу и не знаю отвечать ли всерьез или пошутить. Поскольку уже пошучено, (спасибо, безымянный анонимус) отвечу максимально серьезно.

"Почему в автомобиле работает мотор, но колёса не крутятся?"

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

"Почему в автомобиле работает мотор при отпущенной педали газа? А педаль газа регулирует скорость сжигания топлива или что-то иное?"

Педаль регулирует скорость подачи в двигатель топливной смеси. Чем больше подается смеси тем скорее вращается мотор. Когда педаль отпущена подача смеси минимальна, но не равна нулю, и двигатель работает на минимальных оборотах.

В автомобилях с автоматической трансмиссией всё это несколько иначе.

Механик

Date: 2003-10-14 11:23 pm (UTC)
From: (Anonymous)
Уважаемый анонимный голубчик, а может быть даже голубушка!

Когда я получил от жены этот замечательный результат я совершенно не думал о восьмеричном исчислении. А зря. По мере подрастания Илюша проявлял не по-возрасту острый интерес к моим компьютерным книгам, которых у меня было довольно много. Иногда я его брал на работу, но это пришлось быстро прекратить когда один начальник машины едва не получил инфаркт обнаружив не в меру шустрого юного исследователя в силовом шкафу М-222.
Когда все книги были прочитаны Илюша уже был достаточно взрослым чтобы передвигаться по городу самостоятельно. Он нахально добивался приёма у самого большого начальника каждого ВЦ где я бывал, представлялся моим сыном, излагал свои идеи, и получал у обалдевшего начальника эккаунт. Интересно, что во всём остальном ребенок был жутко застенчивым, но это уже совершенно не восьмеричная история.

Re: ... той же монетой

Date: 2003-10-15 06:42 am (UTC)
From: [identity profile] onodera.livejournal.com
Спасибо большое.

По поводу древних римлян

Date: 2003-10-16 10:16 pm (UTC)
From: (Anonymous)
У римлян вообще странно было с числами. Система записи у них вроде бы непозиционная, но отдельные числа вроде 5, 50 и т. д. говорят о пятеричной системе счисления (я всегда поэтому удивляюсь, где у них 25). Вот.
А пятеричная система у них, кажется, была замечена ещё и внутри пирамид.

восьмеричные...

Date: 2005-06-27 02:58 pm (UTC)
From: (Anonymous)
Да что вы в самом деле все о минимумах при восьмеричных-то?
Сколько пива по максимуму в обе руки вмещается - вот основа! ;)))

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
2829 30 31   

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 1st, 2026 08:16 pm
Powered by Dreamwidth Studios