0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В этом гайде разберемся, что такое системы счисления, для чего программисты используют непривычные способы для записи чисел и как их понимать.</p>
1
<p>В этом гайде разберемся, что такое системы счисления, для чего программисты используют непривычные способы для записи чисел и как их понимать.</p>
2
<h2>Содержание</h2>
2
<h2>Содержание</h2>
3
<ul><li><a>Что такое системы счисления</a></li>
3
<ul><li><a>Что такое системы счисления</a></li>
4
<li><a>От десятичных чисел к двоичным</a></li>
4
<li><a>От десятичных чисел к двоичным</a></li>
5
<li><a>Зачем нужна двоичная система</a></li>
5
<li><a>Зачем нужна двоичная система</a></li>
6
<li><a>Как переводить двоичные числа в десятичные</a></li>
6
<li><a>Как переводить двоичные числа в десятичные</a></li>
7
<li><a>Как переводить десятичные числа в двоичные</a></li>
7
<li><a>Как переводить десятичные числа в двоичные</a></li>
8
<li><a>Шестнадцатеричная система счисления</a></li>
8
<li><a>Шестнадцатеричная система счисления</a></li>
9
<li><a>Восьмеричная система счисления</a></li>
9
<li><a>Восьмеричная система счисления</a></li>
10
<li><a>Конвертация чисел в программах</a></li>
10
<li><a>Конвертация чисел в программах</a></li>
11
<li><a>Сервисы для перевода из системы в систему</a></li>
11
<li><a>Сервисы для перевода из системы в систему</a></li>
12
<li><a>Заключение</a></li>
12
<li><a>Заключение</a></li>
13
</ul><h2>Что такое системы счисления</h2>
13
</ul><h2>Что такое системы счисления</h2>
14
<p>С давних пор людям нужно было записывать числа. В торговле числа нужны, чтобы знать, сколько товаров есть на складе и сколько денег принесла сделка. Записи о положении небесных тел помогли шумерам составить первый календарь, а календарь, в свою очередь, пригодился, чтобы заранее готовиться к посевным и сбору урожая. Строительные сметы, переписи населения, распределение наследства - числа оказались очень востребованными даже в самых древних государствах.</p>
14
<p>С давних пор людям нужно было записывать числа. В торговле числа нужны, чтобы знать, сколько товаров есть на складе и сколько денег принесла сделка. Записи о положении небесных тел помогли шумерам составить первый календарь, а календарь, в свою очередь, пригодился, чтобы заранее готовиться к посевным и сбору урожая. Строительные сметы, переписи населения, распределение наследства - числа оказались очень востребованными даже в самых древних государствах.</p>
15
<p>Так что люди научились записывать числа в незапамятные времена. Небольшие числа легко записывались зарубками или насечками, но если в числе несколько знаков, требуется иная система записи. Эту проблему в разных странах решали по-разному.</p>
15
<p>Так что люди научились записывать числа в незапамятные времена. Небольшие числа легко записывались зарубками или насечками, но если в числе несколько знаков, требуется иная система записи. Эту проблему в разных странах решали по-разному.</p>
16
<p>Сейчас разные способы записи чисел называются<em>системами счисления</em>.</p>
16
<p>Сейчас разные способы записи чисел называются<em>системами счисления</em>.</p>
17
<p>Систем счисления было придумано довольно много, и даже в наши дни мы используем две системы, возникшие в далёкой древности. Из Древнего Рима к нам пришла<em>римская система счисления</em>, где цифры обозначаются буквами латинского алфавита. За основу римляне взяли количество пальцев на одной руке - 5, и на двух руках - 10. Числа 1, 5 и 10 в римской системе обозначаются буквами I, V и X, и с помощью них можно записать любое число от 1 до 49. Например, VII это 7, а XIX - 19.</p>
17
<p>Систем счисления было придумано довольно много, и даже в наши дни мы используем две системы, возникшие в далёкой древности. Из Древнего Рима к нам пришла<em>римская система счисления</em>, где цифры обозначаются буквами латинского алфавита. За основу римляне взяли количество пальцев на одной руке - 5, и на двух руках - 10. Числа 1, 5 и 10 в римской системе обозначаются буквами I, V и X, и с помощью них можно записать любое число от 1 до 49. Например, VII это 7, а XIX - 19.</p>
18
<p>От Древних Шумеров мы научились делить дроби на шестьдесят частей. Именно из-за них в нашем часе 60 минут, а в минуте 60 секунд. Шумерская система счисления так и называется -<em>шестидесятеричная</em>. Но, конечно, наиболее привычной выглядит численная запись в системе, которую придумали в Древней Индии. Сейчас ее называют арабской или<em>десятичной системой счисления</em>.</p>
18
<p>От Древних Шумеров мы научились делить дроби на шестьдесят частей. Именно из-за них в нашем часе 60 минут, а в минуте 60 секунд. Шумерская система счисления так и называется -<em>шестидесятеричная</em>. Но, конечно, наиболее привычной выглядит численная запись в системе, которую придумали в Древней Индии. Сейчас ее называют арабской или<em>десятичной системой счисления</em>.</p>
19
<h2>От десятичных чисел к двоичным</h2>
19
<h2>От десятичных чисел к двоичным</h2>
20
<p>Разберемся, как устроена десятичная система, на примере произвольного большого числа.</p>
20
<p>Разберемся, как устроена десятичная система, на примере произвольного большого числа.</p>
21
<p>Это четырехзначное число, потому что оно состоит из четырёх цифр. И, поскольку речь идёт о десятичной системе, мы можем использовать десять различных цифр.</p>
21
<p>Это четырехзначное число, потому что оно состоит из четырёх цифр. И, поскольку речь идёт о десятичной системе, мы можем использовать десять различных цифр.</p>
22
<p>Величина, которая скрывается за каждой цифрой, зависит от её позиции, поэтому такую систему счисления называют также и позиционной. Справа мы записываем самые младшие значения -<em>единицы</em>, слева от них<em>десятки</em>, затем<em>сотни</em>, и так далее. Запись 1702 означает буквально следующее.</p>
22
<p>Величина, которая скрывается за каждой цифрой, зависит от её позиции, поэтому такую систему счисления называют также и позиционной. Справа мы записываем самые младшие значения -<em>единицы</em>, слева от них<em>десятки</em>, затем<em>сотни</em>, и так далее. Запись 1702 означает буквально следующее.</p>
23
<p>Цифры, записанные в соседних позициях, различаются в десять раз - это и есть десятичная система. Однако, как мы говорили ранее, привычная нам десятичная система - далеко не единственная. Однако, опираясь на неё, нам будет проще понять принципы работы других систем счисления. Например, для записи того же самого числа 1702 в двоичной системе надо придерживаться тех же правил, но вместо десяти цифр нам потребуется всего две - 0 и 1.</p>
23
<p>Цифры, записанные в соседних позициях, различаются в десять раз - это и есть десятичная система. Однако, как мы говорили ранее, привычная нам десятичная система - далеко не единственная. Однако, опираясь на неё, нам будет проще понять принципы работы других систем счисления. Например, для записи того же самого числа 1702 в двоичной системе надо придерживаться тех же правил, но вместо десяти цифр нам потребуется всего две - 0 и 1.</p>
24
<p>Цифры, записанные в соседних позициях, будут различаться не в десять раз, а в два. То есть там, где в десятичной системе мы видим 1, 10, 100, 1 000, 10 000, в двоичной будут числа 1, 2, 4, 8, 16 и так далее.</p>
24
<p>Цифры, записанные в соседних позициях, будут различаться не в десять раз, а в два. То есть там, где в десятичной системе мы видим 1, 10, 100, 1 000, 10 000, в двоичной будут числа 1, 2, 4, 8, 16 и так далее.</p>
25
<p>Это очень большое двоичное число. Давайте запишем его в привычной форме:</p>
25
<p>Это очень большое двоичное число. Давайте запишем его в привычной форме:</p>
26
<p>Это число могло бы быть очень большим десятичным числом, потому что состоит из тех же цифр. Чтобы отличать двоичные числа от десятичных, в качестве индекса у них указывают основание системы счисления, то есть 2.</p>
26
<p>Это число могло бы быть очень большим десятичным числом, потому что состоит из тех же цифр. Чтобы отличать двоичные числа от десятичных, в качестве индекса у них указывают основание системы счисления, то есть 2.</p>
27
<p>Это особенно важно, когда в тексте одновременно встречаются десятичные и двоичные числа.</p>
27
<p>Это особенно важно, когда в тексте одновременно встречаются десятичные и двоичные числа.</p>
28
<h2>Зачем нужна двоичная система</h2>
28
<h2>Зачем нужна двоичная система</h2>
29
<p>Двоичная система выглядит очень непривычно и числа, записанные в ней, получаются огромными. Зачем она вообще нужна? Разве компьютеры не могут работать с привычной нам десятичной системой?</p>
29
<p>Двоичная система выглядит очень непривычно и числа, записанные в ней, получаются огромными. Зачем она вообще нужна? Разве компьютеры не могут работать с привычной нам десятичной системой?</p>
30
<p>Оказывается, когда-то они именно так и работали. Самый первый компьютер ENIAC, разработанный в 1945 году, хранил числа в десятичной системе счисления. Для хранения одной цифры применялась схема, которая называется кольцевым регистром, она состояла из десяти радиоламп.</p>
30
<p>Оказывается, когда-то они именно так и работали. Самый первый компьютер ENIAC, разработанный в 1945 году, хранил числа в десятичной системе счисления. Для хранения одной цифры применялась схема, которая называется кольцевым регистром, она состояла из десяти радиоламп.</p>
31
<p>Чтобы записать все числа до миллиона - от 0 до 999 999 - надо шесть цифр, значит, для хранения таких чисел нужно целых 60 ламп.</p>
31
<p>Чтобы записать все числа до миллиона - от 0 до 999 999 - надо шесть цифр, значит, для хранения таких чисел нужно целых 60 ламп.</p>
32
<p>Инженеры заметили, что если бы они кодировали числа в двоичной системе, то для хранения таких же больших чисел им бы потребовалось всего двадцать радиоламп - в три раза меньше!</p>
32
<p>Инженеры заметили, что если бы они кодировали числа в двоичной системе, то для хранения таких же больших чисел им бы потребовалось всего двадцать радиоламп - в три раза меньше!</p>
33
<p>Первое преимущество двоичных чисел - простота схем. Второе, и не менее важное - быстродействие. Сложение чисел, хранящихся в кольцевом регистре, требует до десяти тактов процессора на каждую операцию. Сложение двоичных чисел можно выполнить за один такт - то есть в десять раз быстрее.</p>
33
<p>Первое преимущество двоичных чисел - простота схем. Второе, и не менее важное - быстродействие. Сложение чисел, хранящихся в кольцевом регистре, требует до десяти тактов процессора на каждую операцию. Сложение двоичных чисел можно выполнить за один такт - то есть в десять раз быстрее.</p>
34
<p>Группа инженеров, создавших первый компьютер, в 1946 году опубликовала статью, где обосновала преимущество двоичной системы для представления чисел в компьютерах. Первой среди авторов была указана фамилия американского математика Джона фон Неймана. Поэтому сейчас принципы проектирования компьютеров называются архитектурой фон Неймана, хотя это не совсем справедливо по отношению к другим изобретателям компьютера.</p>
34
<p>Группа инженеров, создавших первый компьютер, в 1946 году опубликовала статью, где обосновала преимущество двоичной системы для представления чисел в компьютерах. Первой среди авторов была указана фамилия американского математика Джона фон Неймана. Поэтому сейчас принципы проектирования компьютеров называются архитектурой фон Неймана, хотя это не совсем справедливо по отношению к другим изобретателям компьютера.</p>
35
<p>При разработке программы с двоичной записью столкнуться довольно сложно: компьютер в подавляющем большинстве случаев сам переводит двоичные числа в десятичные и обратно. Можно долго писать код, даже не подозревая, что внутри компьютера данные хранятся каким-то особым образом.</p>
35
<p>При разработке программы с двоичной записью столкнуться довольно сложно: компьютер в подавляющем большинстве случаев сам переводит двоичные числа в десятичные и обратно. Можно долго писать код, даже не подозревая, что внутри компьютера данные хранятся каким-то особым образом.</p>
36
<p>Зачем изучать двоичную систему, если компьютер делает всю работу за нас? Иногда программистам приходится писать программы, которые работают напрямую с оборудованием. Например, разработчики игр должны знать, как работают видеокарты, чтобы сделать компьютерную графику быстрее. А разработчики операционных систем понимают, как устроены диски, чтобы надежно хранить данные.</p>
36
<p>Зачем изучать двоичную систему, если компьютер делает всю работу за нас? Иногда программистам приходится писать программы, которые работают напрямую с оборудованием. Например, разработчики игр должны знать, как работают видеокарты, чтобы сделать компьютерную графику быстрее. А разработчики операционных систем понимают, как устроены диски, чтобы надежно хранить данные.</p>
37
<p>Программы, которые работают с железом напрямую, называются системными или низкоуровневыми. Для их создания разработчик должен понимать, как устроен компьютер. Поэтому изучение систем счисления позволяет программисту расширить свой профессиональный диапазон и стать специалистом широкого профиля.</p>
37
<p>Программы, которые работают с железом напрямую, называются системными или низкоуровневыми. Для их создания разработчик должен понимать, как устроен компьютер. Поэтому изучение систем счисления позволяет программисту расширить свой профессиональный диапазон и стать специалистом широкого профиля.</p>
38
<p>Поэтому для того, чтобы писать сложные системные программы, нужно понимать, как устроена двоичная система счисления.</p>
38
<p>Поэтому для того, чтобы писать сложные системные программы, нужно понимать, как устроена двоичная система счисления.</p>
39
<h2>Как переводить двоичные числа в десятичные</h2>
39
<h2>Как переводить двоичные числа в десятичные</h2>
40
<p>Разберемся, как быстро переводить двоичные числа в десятичные. Для примера потребуется достаточно большое двоичное число, чтобы мы не могли вычислить его на пальцах.</p>
40
<p>Разберемся, как быстро переводить двоичные числа в десятичные. Для примера потребуется достаточно большое двоичное число, чтобы мы не могли вычислить его на пальцах.</p>
41
<p>Запишем его в математической записи, помня, что вместо основания 10, мы используем основание 2.</p>
41
<p>Запишем его в математической записи, помня, что вместо основания 10, мы используем основание 2.</p>
42
<p>Из этого примера видно, что у всех слагаемых только два множителя - 0 и 1. Слагаемые с множителем 0 равны нулю, поэтому их можно отбросить, оставив только слагаемые с множителем 1.</p>
42
<p>Из этого примера видно, что у всех слагаемых только два множителя - 0 и 1. Слагаемые с множителем 0 равны нулю, поэтому их можно отбросить, оставив только слагаемые с множителем 1.</p>
43
<p>У слагаемых с множителем 1 этот множитель можно не записывать.</p>
43
<p>У слагаемых с множителем 1 этот множитель можно не записывать.</p>
44
<p>Теперь нетрудно посчитать сумму.</p>
44
<p>Теперь нетрудно посчитать сумму.</p>
45
<p>Вывод: число 11010 в двоичной записи - то же самое, что 26 в десятичной.</p>
45
<p>Вывод: число 11010 в двоичной записи - то же самое, что 26 в десятичной.</p>
46
<p>Ещё раз повторим, как перевести двоичное число в десятичное.</p>
46
<p>Ещё раз повторим, как перевести двоичное число в десятичное.</p>
47
<ul><li>Записать число в математическом виде</li>
47
<ul><li>Записать число в математическом виде</li>
48
<li>Отбросить слагаемые с множителем 0</li>
48
<li>Отбросить слагаемые с множителем 0</li>
49
<li>Сложить результат</li>
49
<li>Сложить результат</li>
50
</ul><p>Программисты иногда запоминают некоторые степени числа два, чтобы уметь оценивать порядок двоичных чисел. Вы можете подглядывать в эту таблицу:</p>
50
</ul><p>Программисты иногда запоминают некоторые степени числа два, чтобы уметь оценивать порядок двоичных чисел. Вы можете подглядывать в эту таблицу:</p>
51
<p>С помощью этой таблицы можно переводить числа из двоичной системы в десятичную практически "в уме".</p>
51
<p>С помощью этой таблицы можно переводить числа из двоичной системы в десятичную практически "в уме".</p>
52
<h2>Как переводить десятичные числа в двоичные</h2>
52
<h2>Как переводить десятичные числа в двоичные</h2>
53
<p>Эта задача похожа на математическую загадку, и её можно встретить на олимпиаде для школьников.</p>
53
<p>Эта задача похожа на математическую загадку, и её можно встретить на олимпиаде для школьников.</p>
54
<p>Чтобы научиться её решать, давайте ещё раз посмотрим на первые натуральные числа в двоичной и десятичной записи.</p>
54
<p>Чтобы научиться её решать, давайте ещё раз посмотрим на первые натуральные числа в двоичной и десятичной записи.</p>
55
<p>Обратим внимание на следующую закономерность: все чётные числа - 2, 4, 6 и 8 - в двоичной записи заканчиваются на 0. Все нечётные числа 1, 3, 5, 7 и 9 - на 1. Этому есть простое объяснение - в двоичной записи число 2 это как 10 в десятичной. Если двоичное число делится на два, оно круглое. Математики говорят, что чётные числа делятся на 2 без остатка (или с остатком 0), а нечётные - с остатком 1:</p>
55
<p>Обратим внимание на следующую закономерность: все чётные числа - 2, 4, 6 и 8 - в двоичной записи заканчиваются на 0. Все нечётные числа 1, 3, 5, 7 и 9 - на 1. Этому есть простое объяснение - в двоичной записи число 2 это как 10 в десятичной. Если двоичное число делится на два, оно круглое. Математики говорят, что чётные числа делятся на 2 без остатка (или с остатком 0), а нечётные - с остатком 1:</p>
56
<ul><li>при делении 4 на 2 остаток 0;</li>
56
<ul><li>при делении 4 на 2 остаток 0;</li>
57
<li>при делении 5 на 2 остаток 1;</li>
57
<li>при делении 5 на 2 остаток 1;</li>
58
<li>при делении 6 на 2 остаток 0;</li>
58
<li>при делении 6 на 2 остаток 0;</li>
59
<li>при делении 9 на 2 остаток 1.</li>
59
<li>при делении 9 на 2 остаток 1.</li>
60
</ul><p>Попробуем перевести десятичное число 26 в двоичную систему. Для этого используем деление уголком на 2.</p>
60
</ul><p>Попробуем перевести десятичное число 26 в двоичную систему. Для этого используем деление уголком на 2.</p>
61
<p>Если 26 разделить на 2, то в результате получится 13, остаток от деления 0. Продолжаем дальше:</p>
61
<p>Если 26 разделить на 2, то в результате получится 13, остаток от деления 0. Продолжаем дальше:</p>
62
<ul><li>13 разделить на 2, в результате получится 6, остаток от деления 1;</li>
62
<ul><li>13 разделить на 2, в результате получится 6, остаток от деления 1;</li>
63
<li>6 разделить на 2, в результате получится 3, остаток от деления 0;</li>
63
<li>6 разделить на 2, в результате получится 3, остаток от деления 0;</li>
64
<li>3 разделить на 2, в результате получится 1, остаток от деления 1;</li>
64
<li>3 разделить на 2, в результате получится 1, остаток от деления 1;</li>
65
<li>1 разделить на 2, в результате получится 0, остаток от деления 1;</li>
65
<li>1 разделить на 2, в результате получится 0, остаток от деления 1;</li>
66
</ul><p>Из остатков 1, 1, 0, 1 и 0 складывается нужная нам двоичная запись.</p>
66
</ul><p>Из остатков 1, 1, 0, 1 и 0 складывается нужная нам двоичная запись.</p>
67
<h2>Шестнадцатеричная система счисления</h2>
67
<h2>Шестнадцатеричная система счисления</h2>
68
<p>Мы знаем, что компьютер использует числа для представления любой информации. Например, цвета хранятся в виде трёх чисел - яркости красной, зелёной и синей компонентов цвета. На каждый компонент отводится восемь двоичных позиций, поэтому максимальная яркость компонента равна 11111111₂ или 255. Цвет целиком описывается большим 24-х разрядным двоичным числом, например, 11111010 10000000 01110010. Это цвет Salmon из таблицы цветов HTML, он же<em>лососевый цвет</em>.</p>
68
<p>Мы знаем, что компьютер использует числа для представления любой информации. Например, цвета хранятся в виде трёх чисел - яркости красной, зелёной и синей компонентов цвета. На каждый компонент отводится восемь двоичных позиций, поэтому максимальная яркость компонента равна 11111111₂ или 255. Цвет целиком описывается большим 24-х разрядным двоичным числом, например, 11111010 10000000 01110010. Это цвет Salmon из таблицы цветов HTML, он же<em>лососевый цвет</em>.</p>
69
<p>Старшие восемь позиций отводятся для хранения красного компонента, средние восемь - зелёного, и младшие восемь - синего. Мы видим, что такая запись очень громоздка и неудобна.</p>
69
<p>Старшие восемь позиций отводятся для хранения красного компонента, средние восемь - зелёного, и младшие восемь - синего. Мы видим, что такая запись очень громоздка и неудобна.</p>
70
<p>Кажется, что цвет удобнее записать как десятичное число 16416882. Хотя оно занимает меньше места, по нему трудно понять, какова яркость каждого компонента.</p>
70
<p>Кажется, что цвет удобнее записать как десятичное число 16416882. Хотя оно занимает меньше места, по нему трудно понять, какова яркость каждого компонента.</p>
71
<p>Чтобы записывать большие двоичные числа, программисты придумали использовать шестнадцатеричную систему счисления:</p>
71
<p>Чтобы записывать большие двоичные числа, программисты придумали использовать шестнадцатеричную систему счисления:</p>
72
<ul><li>В десятичной системе десять цифр, а в шестнадцатеричной - шестнадцать</li>
72
<ul><li>В десятичной системе десять цифр, а в шестнадцатеричной - шестнадцать</li>
73
<li>В десятичной системе соседние позиции отличаются в десять раз, а в шестнадцатеричной - в шестнадцать раз</li>
73
<li>В десятичной системе соседние позиции отличаются в десять раз, а в шестнадцатеричной - в шестнадцать раз</li>
74
</ul><p>Как и в случае с двоичной системой, цифры 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9 заимствуются из десятичной системы. Но в данном случае этих цифр не хватает: нужно ещё шесть. Их в шестнадцатеричной системе принято обозначать первыми буквами английского алфавита:</p>
74
</ul><p>Как и в случае с двоичной системой, цифры 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9 заимствуются из десятичной системы. Но в данном случае этих цифр не хватает: нужно ещё шесть. Их в шестнадцатеричной системе принято обозначать первыми буквами английского алфавита:</p>
75
<p>Шестнадцатеричная система счисления хороша тем, что группа из четырёх двоичных цифр кодируется одной шестнадцатеричной цифрой. Таким образом, лососевый цвет выглядит как:</p>
75
<p>Шестнадцатеричная система счисления хороша тем, что группа из четырёх двоичных цифр кодируется одной шестнадцатеричной цифрой. Таким образом, лососевый цвет выглядит как:</p>
76
<p>В шестнадцатеричной системе счисления он записывается так:</p>
76
<p>В шестнадцатеричной системе счисления он записывается так:</p>
77
<p>Вначале трудно понять, каков порядок у шестнадцатеричного числа FA. Как и в случае с двоичными числами, программисты обычно помнят порядки круглых шестнадцатеричных чисел. Но можно не запоминать, а подглядывать в эту таблицу:</p>
77
<p>Вначале трудно понять, каков порядок у шестнадцатеричного числа FA. Как и в случае с двоичными числами, программисты обычно помнят порядки круглых шестнадцатеричных чисел. Но можно не запоминать, а подглядывать в эту таблицу:</p>
78
<p>Чтобы переводить числа из десятичной системы в шестнадцатеричную и обратно, двоичное представление можно использовать как промежуточное. Часто это самый простой способ: двоичное и шестнадцатеричное представления без труда переводятся друг в друга.</p>
78
<p>Чтобы переводить числа из десятичной системы в шестнадцатеричную и обратно, двоичное представление можно использовать как промежуточное. Часто это самый простой способ: двоичное и шестнадцатеричное представления без труда переводятся друг в друга.</p>
79
<h2>Восьмеричная система счисления</h2>
79
<h2>Восьмеричная система счисления</h2>
80
<p>Восьмеричная система когда-то использовалась наравне с шестнадцатеричной. Из названия понятно, что она использует всего восемь цифр: 0, 1, 2, 3, 4, 5, 6 и 7. Восьмеричная система подходит для представления шести-, девяти- и двенадцатиразрядных двоичных чисел.</p>
80
<p>Восьмеричная система когда-то использовалась наравне с шестнадцатеричной. Из названия понятно, что она использует всего восемь цифр: 0, 1, 2, 3, 4, 5, 6 и 7. Восьмеричная система подходит для представления шести-, девяти- и двенадцатиразрядных двоичных чисел.</p>
81
<p>Такие числа встречаются нечасто. Один из самых известных примеров использования восьмеричных чисел - права доступа в операционной системе UNIX. Они записываются девятизначным двоичным числом, например 110100100 или 111101100. Запоминать и передавать такие числа неудобно, поэтому программисты предпочитают восьмеричную систему счисления, и записывают права доступа в виде 644 или 754.</p>
81
<p>Такие числа встречаются нечасто. Один из самых известных примеров использования восьмеричных чисел - права доступа в операционной системе UNIX. Они записываются девятизначным двоичным числом, например 110100100 или 111101100. Запоминать и передавать такие числа неудобно, поэтому программисты предпочитают восьмеричную систему счисления, и записывают права доступа в виде 644 или 754.</p>
82
<p>Популярные операционные системы Linux и MacOS берут своё начало в UNIX, поэтому там права доступа также задаются восьмеричным числом.</p>
82
<p>Популярные операционные системы Linux и MacOS берут своё начало в UNIX, поэтому там права доступа также задаются восьмеричным числом.</p>
83
<p>Пользователи UNIX используют команду stat, чтобы узнать права доступа, и команду chmod, чтобы изменить их. На рисунке вы видите, что команды stat и chmod используют восьмеричные числа. Подробный рассказ об этих командах выходит за рамки нашей статьи. Узнаете больше о правах доступа, и о том, что означают эти числа, можно изучив командную строку Linux.</p>
83
<p>Пользователи UNIX используют команду stat, чтобы узнать права доступа, и команду chmod, чтобы изменить их. На рисунке вы видите, что команды stat и chmod используют восьмеричные числа. Подробный рассказ об этих командах выходит за рамки нашей статьи. Узнаете больше о правах доступа, и о том, что означают эти числа, можно изучив командную строку Linux.</p>
84
<p>Подводя итог, можно сказать, что восьмеричные числа сейчас используются редко. В подавляющем большинстве случаев программисты используют шестнадцатеричную запись.</p>
84
<p>Подводя итог, можно сказать, что восьмеричные числа сейчас используются редко. В подавляющем большинстве случаев программисты используют шестнадцатеричную запись.</p>
85
<h2>Конвертация чисел в программах</h2>
85
<h2>Конвертация чисел в программах</h2>
86
<p>Языки программирования умеют работать с числами, записанными в разных системах счисления, и переводить их из одной системы в другую. Для примера рассмотрим работу с разными системами счисления на Python и JavaScript.</p>
86
<p>Языки программирования умеют работать с числами, записанными в разных системах счисления, и переводить их из одной системы в другую. Для примера рассмотрим работу с разными системами счисления на Python и JavaScript.</p>
87
<h3>Python</h3>
87
<h3>Python</h3>
88
<p>Чтобы записать в Python двоичное число, добавьте перед ним<em>префикс</em><strong>0b</strong>. Десятичное число 26 можно записать в виде 0b11010. У шестнадцатеричных чисел префикс<strong>0x</strong>, а у восьмеричных -<strong>0o</strong>.</p>
88
<p>Чтобы записать в Python двоичное число, добавьте перед ним<em>префикс</em><strong>0b</strong>. Десятичное число 26 можно записать в виде 0b11010. У шестнадцатеричных чисел префикс<strong>0x</strong>, а у восьмеричных -<strong>0o</strong>.</p>
89
<p>Во всех случаях, чтобы записать число, мы пишем сначала цифру ноль "0", а затем букву, которая определяет систему счисления. Буква "b" - первая в слове binary (двоичный), а буква "o" - в слове octal (восьмеричный). Буква "x" выбивается из общего правила - это третья буква в слове hexadecimal (шестнадцатеричный).</p>
89
<p>Во всех случаях, чтобы записать число, мы пишем сначала цифру ноль "0", а затем букву, которая определяет систему счисления. Буква "b" - первая в слове binary (двоичный), а буква "o" - в слове octal (восьмеричный). Буква "x" выбивается из общего правила - это третья буква в слове hexadecimal (шестнадцатеричный).</p>
90
<p>Функции bin(), hex() и oct() преобразуют число в двоичную, шестнадцатеричную и восьмеричную системы.</p>
90
<p>Функции bin(), hex() и oct() преобразуют число в двоичную, шестнадцатеричную и восьмеричную системы.</p>
91
<p>Благодаря префиксной записи и функциям bin(), hex() и oct(), мы можем преобразовывать числа из любой системы в любую.</p>
91
<p>Благодаря префиксной записи и функциям bin(), hex() и oct(), мы можем преобразовывать числа из любой системы в любую.</p>
92
<h3>JavaScript</h3>
92
<h3>JavaScript</h3>
93
<p>В JavaScript для представления чисел используются те же самые префиксы, что и в Python. 0b11010, 0x1a и 0o32 - записи числа 26 в двоичной, шестнадцатеричной и восьмеричной системах счисления.</p>
93
<p>В JavaScript для представления чисел используются те же самые префиксы, что и в Python. 0b11010, 0x1a и 0o32 - записи числа 26 в двоичной, шестнадцатеричной и восьмеричной системах счисления.</p>
94
<p>Для преобразования чисел в другую систему счисления нужно вызывать метод toString(), передав в качестве параметра основание системы.</p>
94
<p>Для преобразования чисел в другую систему счисления нужно вызывать метод toString(), передав в качестве параметра основание системы.</p>
95
<p>Обычно в JavaScript мы можем вызвать метод у объекта с помощью точки. Например, если мы сохранили число в переменной i, мы можем узнать его шестнадцатеричное представление, вызвав метод i.toString(16). Но мы не можем вызывать метод у числа 2 - 2.toString(16) - потому что в JavaScript точка в записи чисел разделяет целую и дробную части. Если дробная часть равна нулю, её можно не записывать, поэтому "2." означает то же самое, что и "2.0".</p>
95
<p>Обычно в JavaScript мы можем вызвать метод у объекта с помощью точки. Например, если мы сохранили число в переменной i, мы можем узнать его шестнадцатеричное представление, вызвав метод i.toString(16). Но мы не можем вызывать метод у числа 2 - 2.toString(16) - потому что в JavaScript точка в записи чисел разделяет целую и дробную части. Если дробная часть равна нулю, её можно не записывать, поэтому "2." означает то же самое, что и "2.0".</p>
96
<p>В примере вы видите три корректных способа обойти эту проблему, и вызвать метод toString() у числа 26.</p>
96
<p>В примере вы видите три корректных способа обойти эту проблему, и вызвать метод toString() у числа 26.</p>
97
<h2>Сервисы для перевода из системы в систему</h2>
97
<h2>Сервисы для перевода из системы в систему</h2>
98
<p>Существует множество сервисов для перевода чисел из системы в систему. Это умеет даже Google. Чтобы перевести двоичное число, например, 11010 в десятичную систему, надо ввести запрос<strong>0b11010 decimal</strong>.</p>
98
<p>Существует множество сервисов для перевода чисел из системы в систему. Это умеет даже Google. Чтобы перевести двоичное число, например, 11010 в десятичную систему, надо ввести запрос<strong>0b11010 decimal</strong>.</p>
99
<p>Чтобы перевести десятичное число, например, 26 в двоичную систему, надо ввести запрос<strong>26 binary</strong>.</p>
99
<p>Чтобы перевести десятичное число, например, 26 в двоичную систему, надо ввести запрос<strong>26 binary</strong>.</p>
100
<p>Обратите внимание, что Google использует префикс 0b, чтобы отличать двоичные числа от десятичных.</p>
100
<p>Обратите внимание, что Google использует префикс 0b, чтобы отличать двоичные числа от десятичных.</p>
101
<p>Чтобы перевести десятичное число 137 в шестнадцатеричную систему, введите запрос<strong>137 hex</strong>.</p>
101
<p>Чтобы перевести десятичное число 137 в шестнадцатеричную систему, введите запрос<strong>137 hex</strong>.</p>
102
<p>Чтобы перевести шестнадцатеричное число 2BAD в десятичную систему, введите запрос<strong>0x2BAD decimal</strong>.</p>
102
<p>Чтобы перевести шестнадцатеричное число 2BAD в десятичную систему, введите запрос<strong>0x2BAD decimal</strong>.</p>
103
<p>Google использует префикс 0x для того, чтобы отличать шестнадцатеричные числа от всех прочих. Чтобы перевести число 121 в восьмеричную систему, введите запрос<strong>121 octal</strong>.</p>
103
<p>Google использует префикс 0x для того, чтобы отличать шестнадцатеричные числа от всех прочих. Чтобы перевести число 121 в восьмеричную систему, введите запрос<strong>121 octal</strong>.</p>
104
<p>Чтобы перевести число обратно, введите в строке поиска запрос<strong>0o171 decimal</strong>.</p>
104
<p>Чтобы перевести число обратно, введите в строке поиска запрос<strong>0o171 decimal</strong>.</p>
105
<p>Мы видим, что Google для представления чисел в двоичной, шестнадцатеричной и восьмеричной системах счисления использует такие же префиксы, которые мы видели в примерах на Python и JavaScript.</p>
105
<p>Мы видим, что Google для представления чисел в двоичной, шестнадцатеричной и восьмеричной системах счисления использует такие же префиксы, которые мы видели в примерах на Python и JavaScript.</p>
106
<h2>Заключение</h2>
106
<h2>Заключение</h2>
107
<p>Люди изобрели разные способы записывать числа. Мы называем их системами счисления. Привычный для нас способ записи называется десятичной системой счисления.</p>
107
<p>Люди изобрели разные способы записывать числа. Мы называем их системами счисления. Привычный для нас способ записи называется десятичной системой счисления.</p>
108
<p>Компьютеры, которые работали в десятичной системе, оказались сложными и медленными. Хранение чисел в двоичной системе позволило упростить схемы и ускорить работу компьютеров.</p>
108
<p>Компьютеры, которые работали в десятичной системе, оказались сложными и медленными. Хранение чисел в двоичной системе позволило упростить схемы и ускорить работу компьютеров.</p>
109
<p>Обычно нам не нужно знать, как именно компьютер хранит числа, потому что он умеет переводить их в привычную нам форму. Но если мы хотим разрабатывать программы, которые работают с оборудованием напрямую - системные утилиты или компьютерные игры, - нужно разобраться, как устроены двоичная и шестнадцатеричная системы.</p>
109
<p>Обычно нам не нужно знать, как именно компьютер хранит числа, потому что он умеет переводить их в привычную нам форму. Но если мы хотим разрабатывать программы, которые работают с оборудованием напрямую - системные утилиты или компьютерные игры, - нужно разобраться, как устроены двоичная и шестнадцатеричная системы.</p>
110
<p>Существует ряд алгоритмов, которые помогают перевести число из одной системы в другую, но они достаточно запутанные. Проще использовать Google.</p>
110
<p>Существует ряд алгоритмов, которые помогают перевести число из одной системы в другую, но они достаточно запутанные. Проще использовать Google.</p>
111
<p>Двоичная запись чисел очень громоздкая, поэтому программисты предпочитают записывать числа в шестнадцатеричной системе счисления. Восьмеричная запись чисел сейчас используется очень редко.</p>
111
<p>Двоичная запись чисел очень громоздкая, поэтому программисты предпочитают записывать числа в шестнадцатеричной системе счисления. Восьмеричная запись чисел сейчас используется очень редко.</p>
112
<p>Вы можете конвертировать числа из системы в систему на своём любимом языке программирования.</p>
112
<p>Вы можете конвертировать числа из системы в систему на своём любимом языке программирования.</p>