Система счисления это

К уже приведенному определению можно добавить теорему: “если P=Q n (P,Q,n – целые положительные числа, при этом P и Q — основания), то запись любого числа в смешанной (P-Q)-ой системе счисления тождественно совпадает с записью этого же числа в системе счисления с основанием Q.”

Система счисления

Система счисле́ния — символический метод записи чисел, представление чисел с помощью письменных знаков.

  • даёт представления множества чисел (целых и/или вещественных);
  • даёт каждому числу уникальное представление (или, по крайней мере, стандартное представление);
  • отражает алгебраическую и арифметическую структуру чисел.

Системы счисления подразделяются на позиционные, непозиционные и смешанные.

Про системы счисления

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

Начинаю серию статей с простым объяснением всяких фундаментальных вещей с иллюстрациями. Школьнику, которого учитель информатики заставляет переводить числа туда-сюда, а он вообще не врубается, что происходит. Дизайнеру, который не знает, что значит цвет #FFDD00. Тем, кто всё знает, но не против ещё раз укрепить модель.

В статье всё замаскировано под исторические события. Это фикция, я не знаю историю, поэтому придумал свою, чтобы было проще рассказывать.

Жил-был древний человек.

И были у него овцы.

И решил он однажды посчитать, сколько у него овец. Но считать ещё не умел.

Древний человек придумал оставлять засечки на камне. Одна засечка — одна овца. Когда рождается овца, человек рисовал засечку, когда умирала — стирал.

И жил так прекрасно древний человек, пока не поумнел и не решил узнать что-нибудь об окружающем его мире. И захотел он посчитать количество звёзд на небе — тем же способом.

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

Потом были древние римляне. Их было много, поэтому, очевидно, были те, кто поумнее, и все остальные. Последние охотились на кабана с копьём, а умные считали добычу и столкнулись с той же проблемой, что и древний человек.

И они подумали: «а давайте нарисуем ещё больше разных закорючек, и они будут кратко обозначать большие числа».

И придумали, что эти закорючки будут такими:

V = IIIII,
X = VV,
L = XXXXX,
C = LL,
D = CCCCC,
M = DD.

Ещё они придумали хитрые правила, чтобы, например, вместо VIIII писать IX, но для простоты повествования мы про эти правила забудем.

И смогли римляне посчитать, что средняя продолжительность жизни — лет L, а звёзд на небе видно примерно MMD. Им этого хватало.

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

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

Заметьте, что во всех предыдущих способах записи закорючки (цифры), стоящие рядом, просто складываются. Если древний человек написал II, это значит «I засечка и ещё I засечка». Если римлянин написал VII, это значит буквально IIIII + I + I, то есть IIIIIII.

Умный человек (горе ему) придумал вот что:

  1. Пусть у нас будет сколько-то закорючек, например, X (здесь и дальше X — римская цифра, а не «неизвестное»). Позвал знакомого араба, сказал ему: «придумай мне X закорючек». Араб почесал репу и нарисовал: 0123456789.
  1. Пусть 0 означает «ничего», а каждая следующая цифра сама по себе означает число, больше предыдущего на 1.

А дальше вообще отвал башки.

  1. Пусть чем раньше в числе стоит цифра, тем большую «значимость» она имеет. Если цифра стоит в конце, она значит ровно столько, сколько написано. Если она на втором месте с конца, её собственное значение умножается на X. Если на третьем месте, то умножается на X и ещё раз на X, и так далее.

Например, если написано 456, то это значит не 4 + 5 + 6, а

4 * X * X + 5 * X + 6.

И понял умный человек, что цифра X ему больше особо и не нужна, потому что X — это 1 * X + 0, а значит записывается в новой системе как «10».

Ещё раз хочу обратить ваше внимание, насколько это неочевидная система — почему нужно ещё умножать цифры на что-то? почему нельзя просто, чтобы 4 значило 4? почему 4 в числе 456 обозначает 400? Но мы с вами выросли на этой системе, поэтому принимаем её за данность.

Таким образом, запись 456 означает 4 * 10 * 10 + 5 * 10 + 6. Какой-то другой умный человек придумал степени, и стало можно вместо 10 * 10 писать 10 ^ 2, вместо 10 * 10 * 10 писать 10 ^ 3 и так далее.

Немного терминологии, чтобы привязать знания к реальности.

  1. Система счисления — это способ записывать количество какими-то чёрточками. Способ подсчёта овец древним человеком — система счисления. Запись чисел с помощью V, X и M римлянами — система счисления. Новый и прогрессивный способ, придуманный умным человеком, — тоже.
  2. Непозиционная система счисления — та, где от положения цифры её значение не меняется. Древний человек придумал именно такую систему — I всегда значит I.
  3. Позиционная система счисления — та, где, наоборот, положение цифры влияет на её значение. Такую систему изобрёл умный человек. Например, в числе 456 цифра 4 означает 400, а в числе 546 — всего 40.
  4. Основание системы счисления — общее количество закорючек (цифр) в ней. Умный человек придумал систему счисления с основанием X (в этой системе, в свою очередь, X записывается как 10).
  5. Разряд — положение цифры в числе.

Что будет, если изменить основание системы счисления, например, на 2?

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

Переведём число 1010 из системы счисления с основанием 2 (то есть, из двоичной системы счисления) в нашу, десятичную. Чтобы не было путаницы, основание системы счисления обычно записывают после числа в нижнем регистре.

Пронумеруем разряды справа налево, начиная с нуля.

1010 = 0 * 2^0 + 1 * 2^1 + 0 * 2^2 + 1 * 2^3 = 0 + 2 + 0 + 8 = 10.

Выходит, 1010 в двоичной системе счисления обозначает такое же количество, какое 10 — в нашей, десятичной.

Двоичная система удобна, потому что в ней достаточно иметь всего две возможные позиции в каждом из разрядов — «ток течёт» или «ток не течёт», «палец загнут» или «палец выпрямлен».

Например, загибая пальцы рук, можно посчитать от 00000 00000 до 11111 11111, если принять левый мизинец за старший разряд, а правый мизинец — за младший, нулевой. Получается, в переводе на десятичную систему счисления на пальцах можно посчитать от нуля до 1023.

Первое, на что я хочу обратить внимание, — основание системы счисления в этой же системе всегда записывается как «10». В двоичной системе счисления число 2 записывается как «10», потому что 1 * 2 + 0 = 2. В шестнадцатеричной системе счисления число 16 записывается как «10», потому что 1 * 16 + 0 = 16. Ну вы поняли.

В связи с этим есть мем:

Инопланетянин говорит, что камней «10», потому что использует систему счисления с основанием 4 по-нашему. В его системе счисления наше «4» записывается как раз как «10». А что такое «4», инопланетянин вообще не знает, потому что у него цифры 0, 1, 2 и 3.

Кстати, про шестнадцатеричную систему счисления. Десять привычных нам цифр уже есть, а где ещё шесть взять? Да давайте просто возьмём ещё шесть букв. После 9 идёт A, потом B, потом C, D, E, F, и только потом — 10. Получается, что последние цифробуквы шестнадцатеричной системы счисления переводятся в десятичную так:

И последнее на сегодня — для дизайнеров. Что означает запись #FFDD00 для цвета? Наверняка вы знаете, что каждый пиксель на экране состоит из трёх лампочек — красного, зелёного и синего цвета, а все остальные цвета получаются смешиванием этих трёх в разной пропорции.

Каждая из лампочек может светить с условной яркостью от 0 до 255. #FFDD00 — это три числа: FF, DD и 00, где каждое число обозначает яркость каждой лампочки.

FF = 15 * 16 + 15 = 255.
DD = 13 * 16 + 13 = 221.
00 = 0.

Получается, красная лампочка включена на все 255, зелёная на 221, а синяя полностью выключена.

#FFFFFF — все лампочки горят на максимум и дают белый цвет. #000000 — все выключены, чёрный цвет.

Следующая статья будет (наверное) про то, что такое, чёрт возьми, электричество, сила тока, чем она отличается от напряжения, что такое заряд, сопротивление и потенциал.

Подписывайтесь на меня в Твиттере: https://twitter.com/adam_arutyunov

А ещё есть канал — «Адам Арутюнов поднимается до мидла». В нём — вы не поверите. t.me/cdarr

  • информатика
  • системы счисления
  • объяснение
  • фундаментальная информатика
  • математика

Перевод из одной системы счисления в другую

Иногда требуется преобразовать число из одной системы счисления в другую, поэтому рассмотрим способы перевода между различными системами.

Преобразование в десятичную систему счисления

Имеется число a1a2a3 в системе счисления с основанием b. Для перевода в 10-ю систему необходимо каждый разряд числа умножить на b n , где n — номер разряда. Таким образом, (a1a2a3)b = (a1*b 2 + a2*b 1 + a3*b 0 )10.

Пример: 1012 = 1*2 2 + 0*2 1 + 1*2 0 = 4+0+1 = 510

Преобразование из десятичной системы счисления в другие
  1. Последовательно делим целую часть десятичного числа на основание системы, в которую переводим, пока десятичное число не станет равно нулю.
  2. Полученные при делении остатки являются цифрами искомого числа. Число в новой системе записывают, начиная с последнего остатка.
  1. Дробную часть десятичного числа умножаем на основание системы, в которую требуется перевести. Отделяем целую часть. Продолжаем умножать дробную часть на основание новой системы, пока она не станет равной 0.
  2. Число в новой системе составляют целые части результатов умножения в порядке, соответствующем их получению.

Записав все остатки снизу вверх, получаем итоговое число 17. Следовательно, 1510 = 178.

Преобразование из двоичной в восьмеричную и шестнадцатеричную системы

Для перевода в восьмеричную — разбиваем двоичное число на группы по 3 цифры справа налево, а недостающие крайние разряды заполняем ведущими нулями. Далее преобразуем каждую группу, умножая последовательно разряды на 2 n , где n — номер разряда.

В качестве примера возьмем число 10012: 10012 = 001 001 = (0*2 2 + 0*2 1 + 1*2 0 ) (0*2 2 + 0*2 1 + 1*2 0 ) = (0+0+1) (0+0+1) = 118

Для перевода в шестнадцатеричную — разбиваем двоичное число на группы по 4 цифры справа налево, затем — аналогично преобразованию из 2-й в 8-ю.

Преобразование из восьмеричной и шестнадцатеричной систем в двоичную

Перевод из восьмеричной в двоичную — преобразуем каждый разряд восьмеричного числа в двоичное 3-х разрядное число делением на 2 (более подробно о делении см. выше пункт “Преобразование из десятичной системы счисления в другие”), недостающие крайние разряды заполним ведущими нулями.

Для примера рассмотрим число 458: 45 = (100) (101) = 1001012

Перевод из 16-ой в 2-ю — преобразуем каждый разряд шестнадцатеричного числа в двоичное 4-х разрядное число делением на 2, недостающие крайние разряды заполняем ведущими нулями.

Преобразование дробной части любой системы счисления в десятичную

Преобразование осуществляется также, как и для целых частей, за исключением того, что цифры числа умножаются на основание в степени “-n”, где n начинается от 1.

Пример: 101,0112 = (1*2 2 + 0*2 1 + 1*2 0 ), (0*2 -1 + 1*2 -2 + 1*2 -3 ) = (5), (0 + 0,25 + 0,125) = 5,37510

Преобразование дробной части двоичной системы в 8- и 16-ую

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

Пример: 1001,012 = 001 001, 010 = (0*2 2 + 0*2 1 + 1*2 0 ) (0*2 2 + 0*2 1 + 1*2 0 ), (0*2 2 + 1*2 1 + 0*2 0 ) = (0+0+1) (0+0+1), (0+2+0) = 11,28

Преобразование дробной части десятичной системы в любую другую

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

Для примера переведем 10,62510 в двоичную систему:
0,625*2 = 1,25
0,250*2 = 0,5
0,5*2 = 1,0
Записав все остатки сверху вниз, получаем 10,62510 = (1010), (101) = 1010,1012

  • Системы счисления
  • двоичная
  • десятичная
  • восьмеричная
  • шестнадцатеричная
  • Программирование

Источники:

https://dic.academic.ru/dic.nsf/ruwiki/4992&rut=fbed19e83377cf89cfa4002ea0f3d73800d0b613327d05d3d6f2b19e96734ef0
https://habr.com/ru/articles/651643/&rut=c05fd402d4a9725aec577142b9dcf52169334d642cb9637cf75e28d2c0fdfe57
https://habr.com/ru/articles/124395/&rut=b8fc8696dd249c2538e459852dcd67fa4f5073a92347d6a4b5439f1b7e7117c8