Системы счисления: различия между версиями

Материал из Викиучебника — открытых книг для открытого мира
Содержимое удалено Содержимое добавлено
→‎Введение: при записи чисел круглые скобки не ставят
→‎Введение: индекс старшего разряда равен n-1
Строка 67: Строка 67:
То есть в р-ичной системе счисления количество цифр равно р и используются цифры от 0 до р-1.
То есть в р-ичной системе счисления количество цифр равно р и используются цифры от 0 до р-1.


В общем случае в позиционной системе счисления числа представляются следующим образом: <math>a_n a_{n-1} ... a_{0f}</math>, где <math>a_0, a_1, ..., a_n</math> — цифры, а <math>f</math> — основание системы счисления. Если используется десятичная система, то <math>f</math> — можно опустить.
В общем случае в позиционной системе счисления числа представляются следующим образом: <math>a_{n-1} ...a_1a_{0f}</math>, где <math>a_0, a_1, ..., a_{n-1}</math> — цифры, а <math>f</math> — основание системы счисления. Если используется десятичная система, то <math>f</math> — можно опустить.


Примеры чисел:
Примеры чисел:

Версия от 08:08, 16 июня 2012

Система счисления — символический метод записи чисел, представление чисел с помощью письменных знаков.
Для начала проведём границу между числом и цифрой:

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

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

Итак запомним:

  • число — это абстрактная мера количества;
  • цифра — это знак для записи числа.

Поскольку чисел гораздо больше чем цифр, то для записи числа обычно используется набор (комбинация) цифр.

Только для небольшого количества чисел — для самых малых по величине — бывает достаточно одной цифры.

Существует много способов записи чисел с помощью цифр. Каждый такой способ называется системой счисления.

Величина числа может зависеть от порядка цифр в записи, а может и не зависеть.

Это свойство определяется системой счисления и служит основанием для простейшей классификации таких систем.

Итак, указанное основание позволяет все системы счисления разделить на три класса (группы):

  • позиционные;
  • непозиционные;
  • смешанные.

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

Расскажем вкратце о смешанных и непозиционных системах.

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

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

Предположим, что мы покупаем пылесос, который стоит 6379 руб.

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

Если мы запишем количество купюр или монет начиная с 1000 руб. и заканчивая одной копейкой, заменяя нулями пропущенные номиналы, то мы получим число 603121200000.

В непозиционных системах счисления величина числа не зависит от положения цифр в записи.

Если бы мы перемешали цифры в числе 603121200000, то мы бы не смогли понять, сколько стоит пылесос. Следовательно, такая запись относится к позиционным системам.

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

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

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

Введение

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

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

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

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

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

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

В общем случае в позиционной системе счисления числа представляются следующим образом: , где — цифры, а — основание системы счисления. Если используется десятичная система, то — можно опустить.

Примеры чисел:

  • — число в двоичной системе счисления, ;
  • — число в троичной системе счисления, ;
  • — число в восьмеричной системе счисления, ;
  • — число в десятичной системе счисления, ;

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

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

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

Из целых чисел ближайшее к числу е — это число 3.

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

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

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

Такое представление чисел обозначает вот такое число: , где — цифры, а — основание системы счисления.

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

  • ;
  • ;
  • ;
  • .

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

Мы знаем, что число можно представить в виде , будем из этого исходить. Что будет, если мы поделим это число на . Получим

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

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

  • , остаток ;
  • , остаток ;
  • , остаток ;
  • , остаток ;
  • , остаток .

Что и следовало ожидать, получили: .

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

  • , остаток ;
  • , остаток ;
  • , остаток .

Получили число: .

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

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

  • , остаток ;
  • , остаток .

Результат: .

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

  • , остаток ;
  • , остаток .

Результат: .

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

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

.

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

  • делим на , получаем и в остатке;
  • делим ещё раз на , получаем и в остатке;
  • и ещё раз делим на , получаем и в остатке;
  • делим в последний раз на , получаем и в остатке.

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

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

h: m: s

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

.

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

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

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

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

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

.

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

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

  • и в остатке, записываем остаток в младший разряд хх: хх:00;
  • и в остатке, записываем остаток в следующий разряд хх:30:00;
  • и в остатке, записываем остаток в старший разряд 07:30:00.

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

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

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

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

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

;

Вы это можете проверить на программе-калькуляторе (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;

Получили .

Возьмём число 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.

Получили .

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

Сложение:

 1001
 1010
 ----
10011

Вычитание:

1110
0101
----
1001

Умножение:

   1110
   0101
   ----
   1110
  0000
 1110
0000 
-------
1000110

Деление:

1000110|101
 101   -----
----   0001110 
  111
  101
  ---
   101
   101
   ---
     00

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

#include <stdio.h>
#include <conio.h>

void dv(unsigned);

int main(int argc, char **argv)
{
  unsigned x;
  printf("Vvedite chislo > ");
  scanf("%d", &x);
  dv(x);
  
  getch();
  return 0;
}

void dv(unsigned x)
{
  unsigned mask = 1, i;
  mask <<= sizeof(unsigned) * 8 - 1;
    for(i = 1; i <= sizeof(unsigned) * 8; i++)
    {
      printf("%c", x & mask ? '1' : '0');
      x <<= 1;
      if(!(i % 8))
        printf(" ");
    }
    printf("\n");
}

Система счисления с основанием е=2,718281828…

Обладает наибольшей плотностью записи информации. Относится к нецелочисленным позиционным системам счисления.

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

Из целочисленных систем счисления обладает наибольшей плотностью записи информации. Первая троичная ЭВМ «Сетунь» была построена в 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

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

Разбиваем его на группы по три цифры: 010 011 010 010. И по таблице переводим: .

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

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

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

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

Ссылки