Какие способы счисления бывают

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

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

  • Число — некоторая абстрактная сущность, мера для описания количества чего-либо.
  • Цифры — знаки, используемые для записи чисел.

Цифры бывают разные: самыми распространёнными являются арабские цифры, представляемые знаками от нуля (0) до девяти (9); менее распространены римские цифры, их можно встретить на циферблате часов или в обозначении века (XIX век).

Поскольку чисел гораздо больше чем цифр, то для записи числа обычно используется набор (комбинация) цифр. Только для небольшого количества чисел — для самых малых по величине целых чисел — бывает достаточно одной цифры. Существует много способов записи чисел с помощью цифр, называемых системой счисления. Величина числа может зависеть от порядка цифр в записи, а может и не зависеть. Это свойство определяется системой счисления и служит основанием для простейшей классификации таких систем, что позволяет все системы счисления разделить на четыре класса (группы):

Позиционные системы счисления подробно рассмотрены ниже, после краткого обзора смешанных и непозиционных систем.

Денежные знаки — это пример смешанной системы счисления.

Сейчас в России используются монеты и купюры следующих номиналов: по 5, 10, 50 копеек и по 1, 2, 5, 10, 50, 100, 200, 500, 1000, 2000, 5000 рублей. Чтобы получить некоторую сумму в рублях, нужно использовать некоторое количество денежных знаков различного достоинства.

Предположим, что пылесос стоит 6379 рублей. Для покупки можно использовать шесть купюр по тысяче рублей, три купюры по сто рублей, одну пятидесятирублёвую купюру, две десятки, одну пятирублёвую монету и две монеты по два рубля. Если записать количество купюр или монет начиная с 1000 руб. и заканчивая пятью копейками, заменяя нулями неиспользуемые номиналы, то получится число 600312120000.

Если перемешать цифры в числе 600312120000, оно представит ложную цену пылесоса. Следовательно, такая запись относится к позиционным системам.

В непозиционных системах счисления величина числа не зависит от положения цифр в записи. Если к каждой цифре приписать знак номинала, то такие составные знаки (цифра + номинал) уже можно перемешивать, то есть такая запись является непозиционной.

Примером «рафинированной» непозиционной системы счисления является римская система.

Содержание

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

Введение

Позиционные системы счисления — это системы счисления, в которых значение цифры напрямую зависит от её положения в числе.
Например, число 01 обозначает единицу, 10 — десять.

Позиционные системы счисления позволяют легко производить арифметические расчёты.

Представление чисел с помощью арабских цифр — самая распространённая позиционная система счисления, она называется «десятичной системой счисления». Десятичной системой она называется потому, что использует десять цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9. Заметьте: максимальная цифра (9) на единицу меньше количества цифр (10).

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

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

Количество цифр, используемых в системе счисления, называется её «основанием». В десятичной системе основание равно десяти, в двоичной системе — двум, ну а в восьмеричной и шестнадцатеричной — соответственно, восьми и шестнадцати. То есть в ручной системе счисления количество цифр равно р и используются цифры от 0 до р-1.

В общем случае в позиционной системе счисления числа представляются следующим образом: a n − 1 . . . a 1 a 0 f <\displaystyle a_. a_<1>a_<0f>> , где a 0 , a 1 , . . . , a n − 1 <\displaystyle a_<0>,a_<1>. a_> — цифры, а f <\displaystyle f> — основание системы счисления. Если используется десятичная система, то f <\displaystyle f> — можно опустить.

Читайте также:  Элементы социальной среды торгового предприятия способы управления персоналом торгового предприятия

  • 25 10 <\displaystyle 25_<10>>— число в десятичной системе счисления, a 0 = 5 , a 1 = 2 <\displaystyle a_<0>=5,a_<1>=2>;
  • 31 8 <\displaystyle 31_<8>>— это же число в восьмеричной системе счисления, a 0 = 1 , a 1 = 3 <\displaystyle a_<0>=1,a_<1>=3>;
  • 221 3 <\displaystyle 221_<3>>— это же число в несимметричной троичной системе счисления, a 0 = 1 , a 1 = 2 , a 2 = 2 <\displaystyle a_<0>=1,a_<1>=2,a_<2>=2>;
  • 11001 2 <\displaystyle 11001_<2>>— это же число в двоичной системе счисления, a 0 = 1 , a 1 = 0 , a 2 = 0 , a 3 = 1 , a 4 = 1 <\displaystyle a_<0>=1,a_<1>=0,a_<2>=0,a_<3>=1,a_<4>=1>;

Зависимость плотности записи информации от основания системы счисления

Удельная натурально логарифмическая плотность записи числа зависит от основания системы счисления х и выражается функцией y=ln(x)/x. Эта функция имеет максимум при x=e=2,718281828….

То есть система счисления с наибольшей плотностью записи имеет не целочисленное основание.

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

Эту задачу решали ещё во времена Непера, в результате для уменьшения таблиц и числа вычислений перешли к таблицам натуральных логарифмов с основанием равным числу Эйлера е=2,718281828… .

Преобразование чисел

Такое представление чисел обозначает вот такое число: a n − 1 f n − 1 + . . . + a 1 f 1 + a 0 f 0 <\displaystyle a_f^+. +a_<1>f^<1>+a_<0>f^<0>> , где a 0 , a 1 , . . . , a n − 1 <\displaystyle a_<0>,a_<1>. a_> — цифры, а f <\displaystyle f> — основание системы счисления.

Посмотрим чему равны числа из примеров. Используем только что приведённую формулу:

  • 25 10 → 2 ⋅ 10 1 + 5 ⋅ 10 0 = 2 ⋅ 10 + 5 ⋅ 1 = 25 10 <\displaystyle 25_<10>\rightarrow 2\cdot 10^<1>+5\cdot 10^<0>=2\cdot 10+5\cdot 1=25_<10>>;
  • 31 8 → 3 ⋅ 8 1 + 1 ⋅ 8 0 = 3 ⋅ 8 + 1 ⋅ 1 = 25 10 <\displaystyle 31_<8>\rightarrow 3\cdot 8^<1>+1\cdot 8^<0>=3\cdot 8+1\cdot 1=25_<10>>;
  • 221 3 → 2 ⋅ 3 2 + 2 ⋅ 3 1 + 1 ⋅ 3 0 = 2 ⋅ 9 + 2 ⋅ 3 + 1 ⋅ 1 = 25 10 <\displaystyle 221_<3>\rightarrow 2\cdot 3^<2>+2\cdot 3^<1>+1\cdot 3^<0>=2\cdot 9+2\cdot 3+1\cdot 1=25_<10>>;
  • 11001 2 → 1 ⋅ 2 4 + 1 ⋅ 2 3 + 0 ⋅ 2 2 + 0 ⋅ 2 1 + 1 ⋅ 2 0 = 1 ⋅ 16 + 1 ⋅ 8 + 0 ⋅ 4 + 0 ⋅ 2 + 1 ⋅ 1 = 25 10 <\displaystyle 11001_<2>\rightarrow 1\cdot 2^<4>+1\cdot 2^<3>+0\cdot 2^<2>+0\cdot 2^<1>+1\cdot 2^<0>=1\cdot 16+1\cdot 8+0\cdot 4+0\cdot 2+1\cdot 1=25_<10>>.

Мы разобрали, как узнать, чему равно число в любой системе счисления. Но как нам получить это число? Представим что у нас есть некоторое число A <\displaystyle A> , и мы хотим получить его представление в системе по основанию f <\displaystyle f> . Как нам это сделать?

Мы знаем, что число A <\displaystyle A> можно представить в виде a n − 1 a n − 2 . . . a 0 f <\displaystyle a_a_. a_<0f>> , будем из этого исходить. Что будет, если мы поделим это число на f <\displaystyle f> . Получим

a n − 1 f n − 1 + . . . a 2 f 2 + a 1 f 1 + a 0 f 0 f = a n − 1 f n − 2 + . . . + a 2 f 1 + a 1 f 0 <\displaystyle <f^+. a_<2>f^<2>+a_<1>f^<1>+a_<0>f^<0>> \over f>=a_f^+. +a_<2>f^<1>+a_<1>f^<0>>

и остаток от деления a 0 <\displaystyle a_<0>> . Почему a 0 <\displaystyle a_<0>> ? Все члены суммы делятся на f <\displaystyle f> без остатка, а последний член a 0 <\displaystyle a_<0>> в результате деления даёт 0 <\displaystyle 0> и a 0 <\displaystyle a_<0>> в остатке, так как максимальное значение цифры всегда на единичку меньше основания системы. Итак мы получили самую правую цифру a 0 <\displaystyle a_<0>> , как остаток от деления, и число a n − 1 a n − 2 . . . a 1 f <\displaystyle a_a_. a_<1f>> , как результат деления числа A <\displaystyle A> на f <\displaystyle f> . Если мы так будем продолжать делить, то получим все цифры a 1 , a 2 . . . a n − 1 <\displaystyle a_<1>,a_<2>. a_> .

Возьмём для примера полюбившееся нам число 25 <\displaystyle 25> и получим представление этого числа в двоичной системе счисления:

  • 25 / 2 = 12 <\displaystyle 25/2=12>, остаток 1 <\displaystyle 1>;
  • 12 / 2 = 6 <\displaystyle 12/2=6>, остаток 0 <\displaystyle 0>;
  • 6 / 2 = 3 <\displaystyle 6/2=3>, остаток 0 <\displaystyle 0>;
  • 3 / 2 = 1 <\displaystyle 3/2=1>, остаток 1 <\displaystyle 1>;
  • 1 / 2 = 0 <\displaystyle 1/2=0>, остаток 1 <\displaystyle 1>.

Что и следовало ожидать, получили: 11001 2 <\displaystyle 11001_<2>> .

Представим число 25 в троичной системе счисления:

  • 25 / 3 = 8 <\displaystyle 25/3=8>, остаток 1 <\displaystyle 1>;
  • 8 / 3 = 2 <\displaystyle 8/3=2>, остаток 2 <\displaystyle 2>;
  • 2 / 3 = 0 <\displaystyle 2/3=0>, остаток 2 <\displaystyle 2>.

Получили число: 221 3 <\displaystyle 221_<3>> .

Для закрепления наших знаний проделаем вычисления для восьмеричной и десятичной систем счисления.

Восьмеричная система счисления:

  • 25 / 8 = 3 <\displaystyle 25/8=3>, остаток 1 <\displaystyle 1>;
  • 3 / 8 = 0 <\displaystyle 3/8=0>, остаток 3 <\displaystyle 3>.

Результат: 31 8 <\displaystyle 31_<8>> .

Десятичная система счисления:

  • 25 / 10 = 2 <\displaystyle 25/10=2>, остаток 5 <\displaystyle 5>;
  • 2 / 10 = 0 <\displaystyle 2/10=0>, остаток 2 <\displaystyle 2>.

Результат: 25 10 <\displaystyle 25_<10>> .

Чтобы ещё лучше понять перевод в различные системы счислений, посмотрим, какие трансформации происходят внутри числа 4567 10 <\displaystyle 4567_<10>> .

Представим это число в виде

4 ⋅ 10 3 + 5 ⋅ 10 2 + 6 ⋅ 10 1 + 7 ⋅ 10 0 = 4 ⋅ 1000 + 5 ⋅ 100 + 6 ⋅ 10 + 7 <\displaystyle 4\cdot 10^<3>+5\cdot 10^<2>+6\cdot 10^<1>+7\cdot 10^<0>=4\cdot 1000+5\cdot 100+6\cdot 10+7> .

Посмотрим, что у нас получится при последовательном делении на 10 <\displaystyle 10> :

  • делим на 10 <\displaystyle 10>, получаем 4 ⋅ 100 + 5 ⋅ 10 + 6 <\displaystyle 4\cdot 100+5\cdot 10+6>и 7 <\displaystyle 7>в остатке;
  • делим ещё раз на 10 <\displaystyle 10>, получаем 4 ⋅ 10 + 5 <\displaystyle 4\cdot 10+5>и 6 <\displaystyle 6>в остатке;
  • и ещё раз делим на 10 <\displaystyle 10>, получаем 4 <\displaystyle 4>и 5 <\displaystyle 5>в остатке;
  • делим в последний раз на 10 <\displaystyle 10>, получаем 0 <\displaystyle 0>и 4 <\displaystyle 4>в остатке.

Шестидесятеричная система счисления

То, как мы представляем время на часах, это пример шестидесятеричной позиционной системы счисления. В представлении времени используется три позиции: для часов, минут и секунд; так как для каждой позиции приходится использовать 60 цифр, а у нас только десять цифр, то для каждой шестидесятиричной позиции используется две десятичные цифры (00, 01, 02, …, 59), а позиции разделяются двоеточием.

Чтобы получить время в секундах мы должны посчитать вот по такой формуле:

h 60 2 + m 60 1 + s 60 0 = h 3600 + m 60 + s <\displaystyle h60^<2>+m60^<1>+s60^<0>=h3600+m60+s>

Рассмотрим действия с шестидесятеричной системой на двух небольших задачках:

  1. Пирог нужно печь в духовке 45 минут, сколько это будет в секундах?
  2. Нужно испечь десять пирогов, сколько потребуется времени?

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

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

Приступим. Чтобы перевести 45 минут в количество секунд, нужно просто, подставить числа в верхнюю формулу: h равняется нулю, m равняется 45 и s — нулю, получаем

0 ⋅ 3600 + 45 ⋅ 60 + 0 = 2700 <\displaystyle 0\cdot 3600+45\cdot 60+0=2700>

Ответ на первый вопрос: пирог нужно печь в духовке 2700 секунд.

Чтобы узнать сколько потребуется времени чтобы испечь десять пирогов нужно время готовки умножить на количество пирогов, то есть на десять. 2700 ⋅ 10 = 27000 <\displaystyle 2700\cdot 10=27000> , но это время в секундах, а нам бы хотелось получить время в привычных нам часах, минутах и секундах, для этого воспользуемся стандартным способом перевода из одной системы счисления в другую, делением на основание системы счисления. Приступим:

  • 27000 / 60 = 450 <\displaystyle 27000/60=450>и 0 <\displaystyle 0>в остатке, записываем остаток в младший разряд хх: хх:00;
  • 450 / 60 = 7 <\displaystyle 450/60=7>и 30 <\displaystyle 30>в остатке, записываем остаток в следующий разряд хх:30:00;
  • 7 / 60 = 0 <\displaystyle 7/60=0>и 7 <\displaystyle 7>в остатке, записываем остаток в старший разряд 07:30:00.

Ответ на второй вопрос: чтобы испечь десять пирогов потребуется 7 часов 30 минут и 0 секунд.

Двоичная система счисления

В компьютерной технике очень часто используется двоичная система счисления. Такую систему очень легко реализовать в электронике (полупроводниковые транзисторы и микросхемы), так как для неё требуется всего два устойчивых состояния (0 и 1).

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

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

10101010 2 = 1 ⋅ 2 7 + 0 ⋅ 2 6 + 1 ⋅ 2 5 + 0 ⋅ 2 4 + 1 ⋅ 2 3 + 0 ⋅ 2 2 + 1 ⋅ 2 1 + 0 ⋅ 2 0 = 128 + 32 + 8 + 2 = 170 <\displaystyle 10101010_<2>=1\cdot 2^<7>+0\cdot 2^<6>+1\cdot 2^<5>+0\cdot 2^<4>+1\cdot 2^<3>+0\cdot 2^<2>+1\cdot 2^<1>+0\cdot 2^<0>=128+32+8+2=170> ;

Вы это можете проверить на программе-калькуляторе (gcalctool в gnome, Kcalc в KDE, или калькулятор в Windows). Он умеет производить расчёты в двоичной, восьмеричной и шестнадцатиричной системах счисления. Теперь вы знаете, как он это проделывает. Если вы захотите посвятить свою жизнь программированию, то вам часто придётся работать со степенями двойки. Ниже представлена таблица:

Степень Значение
0 1
1 2
2 4
3 8
4 16
5 32
6 64
7 128
8 256
9 512
10 1024
11 2048
12 4096
13 8192
14 16384
15 32768
16 65536

Произведём обратное преобразование. Чтобы преобразовать число в десятичном виде к двоичному, нам нужно будет делить всё время на два и смотреть на остаток от деления. Возьмём число 33.

  • 33 : 2 = 16 остаток 1;
  • 16 : 2 = 8 остаток 0;
  • 8 : 2 = 4 остаток 0;
  • 4 : 2 = 2 остаток 0;
  • 2 : 2 = 1 остаток 0;
  • 1 : 2 = 0 остаток 1;

Получили 100001 2 <\displaystyle 100001_<2>> .

Возьмём число 55. Посмотрим, что получится.

  • 55 : 2 = 27 остаток 1;
  • 27 : 2 = 13 остаток 1;
  • 13 : 2 = 6 остаток 1;
  • 6 : 2 = 3 остаток 0;
  • 3 : 2 = 1 остаток 1;
  • 1 : 2 = 0 остаток 1.

Получили 110111 2 <\displaystyle 110111_<2>> .

Ниже приведены ещё примеры со сложением, вычитанием, умножением и делением.

Программа двоичного представления десятичного числа (Написана на Си)

Троичная система счисления

Из целочисленных систем счисления обладает наибольшей плотностью записи информации. Первая троичная ЭВМ «Сетунь» была построена в 1958 году Н. П. Брусенцовым в МГУ.

Четверичная система счисления

Обладает такой же плотностью записи, как и двоичная система счисления. Таблица такая же, как и для двоичной системы счисления.

Восьмеричная и шестнадцатеричная системы счислений

Компьютерам очень удобно оперировать двоичными числами, но люди не привыкли работать с большим количеством цифр. Например, чтобы представить в двоичном виде число 1234 потребуется больше 10 двоичных цифр (10011010010). Поэтому были придуманы восьмеричная и шестнадцатеричная системы счислений. Они удобны как и десятичные числа тем, что для представления числа требуется меньшее количество разрядов. А по сравнению с десятичными числами, перевод в двоичное представление очень простой. Это как будто мы двоичное число разбили на группы по три или четыре разряда и каждой двоичной комбинации придумали значок. Вот таблица для восьмеричных цифр:

Двоичная комбинация Значок
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

А вот таблица для шестнадцатеричных цифр:

Двоичная комбинация Значок
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F

Перевод произвести очень просто, посмотрим на примере числа 010011010010.

Разбиваем его на группы по три цифры: 010 011 010 010. И по таблице переводим: 2322 8 <\displaystyle 2322_<8>> .

Чтобы перевести число в шестнадцатеричное представление разбиваем двоичное число на группы по четыре цифры: 0100 1101 0010. И по таблице переводим: 4 D 2 16 <\displaystyle 4D2_<16>> . С помощью калькулятора Windows мы можем убедиться, что всё проделано верно.

В программистских кругах шестнадцатеричные числа принято предварять значком 0x (например, 0x4D2), такое написание пошло от языка программирования C, либо значком $ (например, $4D2), такая нотация произошла от языка программирования Pascal. Иногда в литературе используют буквы «h» (от англ. hexadecimal) и «b» (от англ. binary) для обозначения соответственно шестнадцатеричных и двоичных чисел (например, FFh или 1011b).

Источник

Читайте также:  Способ засолки рыбы семги
Оцените статью
Разные способы