Системы счисления для начинающих
Страница появилась в связи с тем, что большинство учителей, извините, не удосуживаются разобрать основы. Между тем (вывод из практики), попытки освоится с темой могут быть как у второкласссника, так и у родителей восьмиклассника.
Приведенная ниже информация является попыткой "разжевать" все необходимые аспекты именно с учетом условно "нулевых" знаний, а не дополнения к материалу занятий, как описано в основном разделе по теме. Из-за этого же многое будет повторяться много раз. Наоборот, часть сведений даже не упоминается.
Почти весь материал посвещен разбору десятичной и двоичной систем счисления.
Внимание! На страницу нет прямой ссылки с сайта и она не будет поддерживаться и развиваться, несмотря на незавершенность! Все исправления вносятся только по ссылке выше. Извините, сменились приоритеты.
Что нужно знать (понимать) до того, как приступать к разбору?
- Понятие степени десятичного числа, включая нулевую.
- Степени двойки от 20 до 210. Желательно "вызубрить" весь числовой ряд (1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024) и две опорные точки, важные для практики: 28 = 256 и 210 = 1024.
Отсюда вытекает, что изучать материал по системам счисления способен любой, кто освоил умножение. В норме, это конец 2-го — начало 3-го класса.
Для удобства рассуждений неплохо бы знать разделение чисел на разряды и классы, что является тематикой 4 класса в большом числе программ. Пока не хотелось бы переходить на изложение этого материала, так что, в случае необходимости, обратитесь к поисковым системам с запросом "разряды и классы".
Теперь немного основной и упрощенной терминологии.
Основание системы счисления — количество различных символов или знаков, используемых для записи чисел. Основание заложено в название системы счисления, то есть два — для двоичной (0 и 1) и десять — для десятичной (0, 1, 2, 3, 4, 5, 6, 7, 8 и 9). Основание записывается в нижнем индексе после числа: 102 в двоичной, 1010 в десятичной. По общепринятым правилам, все вычисления на всех уроках и в повседневной жизни делаются в десятичной системе, которая при этом никак не указывается, то есть любое число считается десятичным и это никак дополнительно не выделяется. На обычных уроках информатики изучаются двоичная, восмеричная и шестнадцатеричная системы счисления.
Алфавит системы счисления — перечень символов, используемых для записи чисел.
Если для десятичной системы это будут 10 цифр (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), а для двоичной — только две (0 и 1). В свою очередь, восмеричная система счисления потребует 8 цифр (0, 1, 2, 3, 4, 5, 6, 7).
Алфавит составляется из арабских цифр, начиная с нуля. Если 10 цифровых знаков не хватает, то добавляются латинские буквы (например, в шестнадцатеричной системе добавляются A, B, C, D, E и F).
Разрядная цифра — наименьшее число, которое может быть добавлено в данном разряде. С точки зрения систем счисления, разрядные цифры всегда записывают одинаково (единица и сколько-то нулей): 1, 10, 100, 1000... В реальном числе значение может превышать цифру, то есть получатся разрядные слагаемые. Так как в двоичной системе наибольшей цифрой является 1, разрядные цифры становятся единственным вариантом разрядных слагаемых.
(Я заранее предвижу крики математиков, что это не верно, но так нужно, ибо ни они, ни учителя начальной школы ничего не объясняют. На последующем этапе мы можем говорить о том, что разрядную цифру взяли несколко раз, то есть не 30, а 3*10.)
Разрядное слагаемое — цифра, которая записана в конкретном разряде с добавлением к ней необходимого числа нулей. Важно, что предельное значение слагаемого зависит от системы счисления. Так, для второго разряда (десятков) оно составит: 10 в двоичной (00 и 10) и 90 в десятичной (00, 10, 20, 30, 40, 50, 60, 70, 80 и 90).
Для начала, хотелось бы вернуться к увеличению разрядов на примере однозначного числа в привычной десятичной системе.
Будем считать, что изначально число равно нулю. Прибавив к нему единицу, мы получим 1, прибавив еще единицу, получим 2 и так — до достижения максимальной цифры 9 (разряд заполнен до предела).
Если прибавить еще 1, то увеличение цифры становится невозможным (она и так самая большая) и мы можем сказать, что разряд переполняется. В этом случае производится запись единицы в следующем разряде (десятков), а разряд единиц становится равным нулю. Таким образом мы получаем число 10. (9 + 1 = 10.)
Стоп! Именно в этом выражении скрыт один из ключей к работе со всеми системами счисления. Достаточно понять, что первое слагаемое не просто цифра девять, а самая большая цифра для данной (десятичной) системы счисления.
Степени чисел в десятичной системе
Прежде чем приступать к обсуждению. В последние годы изучение данной темы как на информатике, так и на математике почти не обсуждается.
Для освоения систем счисления необходимо четкое и полное понимание использования степеней чисел, которое в курсе математики к моменту проведения первых уроков по системам счисления (зачастую 5–6 класс) изучается недостаточно полно (в лучшем случае, только квадрат и куб).
Несмотря на то, что степень числа может принимать любое значение, нас будет интересовать только натуральные (целые) и нулевая степени на примере десятичной системы.
Степень числа введена в математике для упрощения записи и уменьшения объема этой записи. Ее смысл заключается в том, что, если один и тот же множитель в произведении повторяется несколько раз, то можно записать его один раз и дополнительно указать, сколько его было. То есть 5·5 = 52 (две пятерки), 5·5·5 = 53 (три пятерки). При этом 5 = 51 (одна пятерка). По другому: записываем число, а справа от него и вверху записываем, сколько раз оно умножается само на себя.
Множитель может быть неизвестным (или любым числом) и его можно обозначить буквой, например, a. Тогда предыдущие записи примут вид a2 (a·a), a3 (a·a·a), a1 (a).
Вероятно, чуть выше вы заметили, что любое число в первой степени равно самому себе a1 = a.
·
an = .
Значения степеней, которые могут пригодится, приведены ниже.
Для наших вычислений крайне важно учитывать еще одно правило, . Любое число в нулевой степени равно единице a0 = 1.
Хоть нам это и не понадобится, следует упомянуть, что 0n = 0. То есть возведение нуля в любую степень дает ноль.
Сложение чисел
Первым и наиглавнейшим правилом нужно считать то, что арифметические действия с числами возможны только если они записаны в одной и той же системе счисления. Исключений два: чиса 0 и 1 равны сами себе в любой системе счисления.
Складывать цифры разрядов надо по "давно забытому" правилу: если их сумма меньше предельной цифры (9 для десятичной системы), то их надо просто сложить. Если же сумма превышает эту максимальную цифру, то одно из слагаемых должно быть разложено на две части, одна из которых дополнит второе слагаемое до переполнения разряда (10 для десятичной). Пример: 7 + 6 = (7 + 3) + 3 = 10 + 3 = 13.
Перевод чисел
Данное действие можно считать самым простым из всех, относящихся к системам счисления. Каждая цифра числа образует слагаемое, которое надо записать, а потом произвести необходимые арифметические действия.
Прежде чем перейти к конкретным рассуждениям, надо отметить, что приводимые в заданиях числа, обычно не превышают 102410 или ненамного больше этого значения. Это связано с разумным ограничением сложности вычислений.
Степень | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
Результат | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 |
X2* | 1 | 10 | 100 | 1000 | 10000 | ... |
Любое из производимых действий будет замкнуто на эту таблицу!
В десятичную систему
Вне зависимости от обсуждаемой системы счисления, любое число можно разбить на разряды, каждый из которых вносит определенный вклад в значение числа. Общей закономерностью является то, что чем правее стоит цифра, тем меньшее значение она подразумевает.
В качестве первого примера рассмотрим число 1111n
В двоичной системе (11112), каждая разрядная единица означает наличие в числе соответствующей степени 2, а ноль — её отсутствие.
Конечно, можно разложить число на разрядные слагаемые и перевести их, зная следующее правило: сколько нолей, такая и степень двойки.
11112 = 10002 + 1002 + 102 + 12 = 23 + 22 + 21 + 20 = 8 + 4 + 2 + 1 = 15.
Но можно и не делать такой громоздкой записи, а провести рассуждения от последней цифры. Конечно, важно, что в любой системе счисления она означает именно то, что в ней записано. Но, в данном случае, оно означает 20 = 1. Все последующие цифры означают последующие же степени числа 2.
Таким образом, мы можем сразу записывать, продолжая рассуждать к началу числа:
Важно, что не нужно делать никакого подсчета, в каком разряде стоит единица. Просто записываем слагаемые из числового ряда. Если в разряде будет стоять ноль, то мы просто пропустим соответствующее число (4 для следующего примера):
10112 = 1 + 2 + 8 = 11.
В троичной системе (11113), каждая разрядная единица означает наличие в числе соответствующей степени 3. Вот и все отличия. Воспользуемся последним способом перевода, как более эффективным.
11113 = 1 + 3 + 9 + 27 = 40.
Вряд ли на такие расчеты нужно более десятка секунд.
В качестве второго примера рассмотрим число 1234n
Из того, что в числе использована цифра 4 следует, что система счисления, как минимум, пятеричная.
Но теперь не все цифры равны единице. Это всего лишь означает, что соответствующая степень взята не один, а несколько раз:
12345 = 4•50 + 3•51 + 2•52 + 1•53 = 4 + 15 + 50 + 125 = 194.
Короче и доступнее: 12345 = 4 + 3•5 + 2•25 + 1•125 = 4 + 15 + 50 + 125 = 194.
Четверку мы записали по описанному выше правилу, что последняя цифра всегда означает то, что написано.
Для шестеричной системы то же самое, но значение увеличится:
12345 = 4•60 + 3•61 + 2•62 + 1•63 = 4 + 18 + 72 + 216 = 310.
В заключение переведем 16-ричное число:
2AF5 = 15 + 10•16 + 2•256 = 687.
Общая формула для перевода:
@
где m — основание системы счисления, k — номер разряда числа.
Из десятичной системы
1. Остаток от деления
Последовательно делим число на основание до тех пор, пока не получим частное, равное нулю. Остатки записываем. После завершения вычислений записываем значения остатков в обратном порядке. Полученное число и будет ответом.
Разложим два числа: 23 и 64.
Делимое | Остаток | Смысл действия |
23 10 5 2 1 0 |
1 1 1 0 1 |
23/2 = 22/2 + 1 = 11 + 1 11/2 = 5 + 1 5/2 = 4/2 + 1 = 2 + 1 2/2 = 1 + 0 1/2 = 0 + 1 |
Делимое | Остаток | Смысл действия |
64 32 16 8 4 2 1 0 |
0 0 0 0 0 0 1 |
64/2 = 32 + 0 32/2 = 16 + 0 16/2 = 8 + 0 8/2 = 4 + 0 4/2 = 2 + 0 2/2 = 1 + 0 1/2 = 0 + 1 |
В некоторых учебниках (например, Босовой) предлагается таблицу записи располагать горизонтально, что очень удобно для сравнительно небольших чисел (<211).
В верхней строке записывается число. Остаток от деления (в нашем случае на 2) записывается под ним, а целая часть частного — в следующей колонке.
Делимое | 23 | 11 | 5 | 2 | 1 |
Остаток | 1 | 1 | 1 | 0 | 1 |
2310 = 101112
Трудно сказать, насколько комфортно ощущают себя люди, производящие привычное деление столь необычным образом. Лично я испытываю значительный дискомфорт, особенно при переводе не в двоичную систему.
Поэтому, давайте перейдем к другому, менее «магическому» способу.
2. Разложение
Как известно, любое число можно представить в виде суммы чисел.Запишем значения степеней числа 2:
Степень | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
Результат | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 |
и разложим те же числа. В качестве ответа запишем множители для степеней двойки.
6410 = 1•64 + 0•32 + 0•16 + 0•8 + 0•4 + 0•2 + 0•1 = 10000002
2310 = 1•16 + 0•8 + 1•4 + 1•2 + 1•1 = 101112
Давайте переведем 44 в троичную систему тем же способом.
4410 = 1•27 + 1•9 + 2•3 + 2•1= 11223
Таким образом становиться ясно, что для этих вычислений нужно
- Знать таблицу степеней данного числа.
- Последовательно записать, сколько раз каждая степень вошла в сумму.
- Так как слагаемые надо находить от большего к меньшему, переписываем значения в ответ по порядку.
Порядок действий на практике
- Записываем таблицу степеней данного основания. Как правило, сделать это несложно, так как предлагаемые в заданиях числа небольшие (в пределах 1000), а многие степени оказываются заученными на математике квадратами и кубами. В крайнем случае, нахождение следующей степени можно свести к умножению на основание. Предельное значение, которое надо выписать, должно быть меньше переводимого числа.
- Вычесть из числа наибольшую подходящую степень (возможно несколько раз). Получим первую цифру и остаток.
- Вычесть из числа следующую степень (возможно несколько раз). Получим вторую цифру и остаток.
- То же до исчерпания числа.
- Так как слагаемые надо находить от большего к меньшему, переписываем значения в ответ по порядку, если не сделали этого ранее.
Пример 3. Переведем 900 в двоичную систему.
- Степени не пишем, так как они ОБЯЗАНЫ быть выучены. Каждая степень может входить в число только ОДИН раз!
- 1024 — слишком большое.
- 512 вычесть можно: 900 — 1*512 = 388.
- 256 вычесть можно: 388 — 1*256 = 132.
- 128 вычесть можно: 132 — 1*128 = 4.
- 64, 32, 16, 8 не вычитаемы, значит, вместо них будут нули: 0000
- 4 вычесть можно: 4 — 1*4 = 0.
- 2 и 1 не вычитаемы, значит, вместо них будут нули: 00
- Перепишем все вычисления:
900 = 1*512 + 1*256 + 1*128 + 0*64 + 0*32 + 0*16 + 0*8 + 1*4 + 0*2 + 0*1, или
900 = 1*29 + 1*28 + 1*27 + 0*26 + 0*25 + 0*24 + 0*23 + 1*22 + 0*21 + 0*20. - Если бы мы вели запись цифр двоичного числа по ходу рассуждений, то ответ был бы давно записан.
- Ответ: 900 = 11100001002.
В связи с довольно большой трудоемкостью, данный метод едва ли можно назвать слишком простым для двоичной системы. Но он вполне понятен и, из-за необходимости четкой записи, всегда может быть легко проверен.
В некоторых случаях, когда число очень мало отличается от степени основания, перевод может оказаться значительно более быстрым, чем другие способы.
Например, число 11110112 можно представить в виде 11111112–1002. Семь единиц дают 27–1 (127), а двоичная сотня — 22 (4). Итого 127–4 = 123. (Во много раз быстрее, чем делить или раскладывать на слагаемые!)
Ой, обсуждается же прямо противоположное. Любое число, на единицу меньше степени двойки записывается в двоичной системе как единицы, число которых соответствует этой степени:
3 = 22–1 = 112, 7 = 23–1 = 1112, 15 = 24–1 = 11112,...
Буквально пара слов о системах счисления и математике: сколько в числе нолей в конце, столько раз оно делится без остатка на основание системы.
Степень | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
Результат | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 | 32768 | 65536 | 131072 | 262 144 | 524 288 | 1 048 576 |
Степень | Результат | Двоичное |
Нолей |
Знаков |
Значения (штуки) |
20 | 1 | 1 | 0 | 1 | 0–1 (2=21) |
21 | 2 | 10 | 1 | 2 | 0–3 (4=22) |
22 | 4 | 100 | 2 | 3 | 0–7 (8=23) |
23 | 8 | 1000 | 3 | 4 | 0–15 (16=24) |
24 | 16 | 10000 | 4 | 5 | 0–31 (32=25) |
25 | 32 | 100000 | 5 | 6 | 0–63 (64=26) |
26 | 64 | 1000000 | 6 | 7 | 0–127 (128=27) |
27 | 128 | 10000000 | 7 | 8 | 0–255 (256=28) |
28 | 256 | 100000000 | 8 | 9 | 0–511 (512=29) |
- Выводы (n — число знаков):
- 2n. Зная таблицу степеней, задания можно выполнять во много раз быстрее и с меньшей вероятностью ошибиться.
- n-значное двоичное число может иметь 2n значений.
- Двоичное число, состоящее из n единиц = 2n — 1.
- Чтобы найти число битов, требующихся для описания некоторого количества значений, нужно взять ближайшую степень двойки, которая не меньше числа значений. Степень и будет искомым ответом, а также числом разрядов в двоичном числе.
- Каждая единица двоичного числа вносит в него вклад,
равный 2 в степени своей позиции от правого края минус 1 (2n–1). Проще это оценивать как 2 в степени количества остальных цифр (нулей) справа.
То есть, 1002 = 22 (два нуля) = 4, 10002 = 23 (три нуля) = 8...