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

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

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

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: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 07:06 pm (UTC)
From: (Anonymous)
Ну вот, мне дали сдачу той же монетой: я сижу и не знаю отвечать ли всерьез или пошутить. Поскольку уже пошучено, (спасибо, безымянный анонимус) отвечу максимально серьезно.

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

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

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

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

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

Механик

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

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

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

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

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

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

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 06:41 pm
Powered by Dreamwidth Studios