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

Система счисления - это набор символов и правила их применения для представления чисел.

Системы счисления могут быть позиционными и непозиционными. В позиционных системах значение цифры зависит от позиции, на которой стоит цифра в записи числа, а в непозиционных - не зависит.

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

Символ I V X L C D M
Число 1 5 10 50 100 500 1000

Остальные числа получаются в результате сложения и вычитания по следующему правилу: если меньшее базовое число предшествует большему (стоит левее в записи), то оно вычитается, если же за базовым числом стоит меньшее или оно последнее - то складывается с результатом, при этом подряд не должно стоять больше трех одинаковых символов. Например, 

IV:    -1 + 5 = 4,

MCDXCVIII:   1000 - 100 + 500 - 10 + 100 + 5 + 1 + 1 + 1 = 1498

Максимальным числом, которое можно представить в классической римской системе является 3999.

В нашей повседневной жизни мы пользуемся десятичной позиционной системой счисления. В ней десять цифр - от 0 до 9, а их значение зависит от позиции. Цифра, которая находится в самом младшем (правом) разряде записи числа, обозначает количество единиц в числе. Цифра в следующем, более старшем разряде (левее самого младшего), обозначает количество десятков, в следующем - количество сотен, и т.д..

Количество цифр, используемых в системе счисления, называется основанием системы. В таблице приведены примеры, распространенных в информатике систем счисления, их основания и наборы цифр (алфавит):

Система счисления Основание Используемые цифры
Десятичная 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Двоичная 2 0, 1
Восьмеричная 8 0, 1, 2, 3, 4, 5, 6, 7
Шестнадцате-
ричная
16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

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

Основной системой в информатике является двоичная, потому что вычисления реализовать в электронных устройствах оказывается достаточно просто именно в этой системе. Современная компьютерная техника основана на электронных логических элементах, имеющих два уровня сигнала - низкий и высокий, соответствующих нулю и единице.

Ниже приведена таблица первых шестнадцати чисел в двоичной, восьмеричной и шестнадцатеричной системах счисления:

Основание системы
10 2 8 16
0 0000 00 0
1 0001 01 1
2 0010 02 2
3 0011 03 3
4 0100 04 4
5 0101 05 5
6 0110 06 6
7 0111 07 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F

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

q = 10q,

где q - основание системы счисления, а 10q читается как один, ноль. Нижний индекс указывает в какой системе записано число. Для приведенных в таблице систем: 2=102, 8 = 108, 16 = 1016

Также в таблице можно заметить, что трех-разрядному двоичному числу соответствует одноразрядное восьмеричное, а четырех-разрядному двоичному - одноразрядное шестнадцатеричное. Это значит, что зная эту таблицу, можно производить прямое преобразование между двоичным и восьмеричным, а также между двоичным и шестнадцатеричным числами.

Например, чтобы перевести 11010102 в  шестнадцатеричного число, разделим условно число на группы по четыре разряда: 0110  1010, при этом отсчет ведем с младшего (правого) разряда, а группу, в которой разрядов меньше четырех, дополняем справа нулями. По таблице находим соответствие: 0110 - это 6, 1010 - A. Получилось - 6A16.

Переведем число 2738 в двоичный вид. 28 - 0102, 78 - 1112, 38 - 0112, записываем последовательно и получаем - 0101110112.

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

Для n-разрядного целого числа в десятичной системе справедливо выражение:

Х10 = An-1 ⋅10n-1 +  An-2 ⋅10n-2 + ... + A1 ⋅101 + A0 ⋅100,

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

Это выражение - разложение десятичного числа по степеням десяти - основания системы. Например, для числа 7583:

758310 = 7⋅103 + 5⋅102 + 8⋅101 + 3⋅100

Аналогичное выражение справедливо для любой позиционной системы счисления:

Xq = An-1⋅qn-1 + An-2⋅qn-2 + ... + A1⋅q1 + A0⋅q0,

где
q - основание системы счисления,
Xq- число, записанное в системе счисления с основанием q,
Аn-1 .. А0 - цифры в соответствующих разрядах числа.

Например,

2C416 = 2⋅162 + 12⋅161 +  4⋅160 =  2⋅256 + 12⋅16 + 4⋅1 =  512 + 192 + 4 = 70810

 Для числа с дробной частью:

Xq = An-1⋅qn-1 + An-2⋅qn-2 + ... + A1⋅q1 + A0⋅q+ A-1⋅q-1 + A-2⋅q-2...

 Например,

10011,1012 =  1⋅24 + 0⋅23 + 0⋅22 + 1⋅21 + 1⋅20 + 1⋅2-1 + 0⋅2-2 + 1⋅2-3 =
  = 16 + 0 + 0 + 2 + 1 + 0,5 + 0 + 0,125 = 19,62510

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

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

Например, переведем число 16910 в двоичную систему:

 169   2                        
-168    84   2                    
1   -84    42   2                
     0   -42    21   2            
         0   -20    10     2         
            1   -10    5     2     
                 0    -4      2     2 
                     1    -2     1 
                         0    

Результат записываем, как показано стрелками: 101010012. Заметим, что в результате первого деления, полученный остаток является самым младшим разрядом числа в другой системе счисления.

Чтобы перевести дробную часть числа, представленному в десятичной системе, надо применить другой метод - последовательное умножение дробной части на основание системы, в которую переводим. Допустим, нужно перевести 0,37510 в двоичную систему счисления.

0, 375  ⋅ 2
750  ⋅ 2
500  ⋅ 2
000  

Вычисления метода удобно записывать в виде столбика, Проводится вертикальная черта, отделяющая дробную часть, Если в результате умножения дробной части получаем число, в котором количество разрядов совпадает с количеством разрядов дробной части, то в следующей строке слева от вертикальной черты пишем 0, если же больше, то старшие разряды  полученного произведения, превышающие дробную часть по количеству разрядов. Справа от черты пишем младшие разряды полученного произведения в количестве равным количеству разрядов дробной части.

В нашем случае, 375 ⋅ 2 = 750, значит, во второй строке пишем слева от черты 0, а справа - 750. Снова умножаем на 2 полученную дробную часть - 750 ⋅ 2 = 1500. Число разрядов 4, поэтому в следующей строке 1 пишем слева от черты, а 500 - справа. Теперь умножаем 500 на 2, заметьте, что умножаем только часть полученного числа, стоящую справа от черты. 500 ⋅ 2 = 1000. В следующей строке пишем 1 слева от черты, 000 - справа. Дальнейшее умножение не имеет смысла, так как будем получать всегда 0. Результатом перевода будет левый столбик - 0,0112.

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

Переведем 3427,58 из десятичной системы в шестнадцатеричную с точностью дробной части 4 знака после запятой.

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

 3427    16      
-32     214    16  
    22   -16    13   
   -16       54      
      67       48      
      64         6      
        3          

Так как 13 в шестнадцатеричной системе  - D, то результат - D6316.

Переведем дробную часть:

0, 58  ∗ 16
28  ⋅ 16
48  ⋅ 16
68  ⋅ 16
10  88  

 Полученное число D63,947A16.

 Арифметические операции с числами в двоичной системе счисления

Методы арифметических операций с двоичными числами точно такие, какие используются для операций с десятичными числами. Рассмотрим несколько примеров.

101101112 + 100012

+ 1 0 1 1 0 1 1 1
      1 0 0 0 1
  1 1 0 0 1 0 0 0

Записываем числа один под другим, при этом числа должны быть "выровнены" по правому краю. Складываем поразрядно, начиная с младших (правых) разрядов. При этом, если сумма разрядов получается двух-разрядной - старший переносим на следующий разряд общего результата.

110110012 - 111012

    . . . .      
- 1 1 0 1 1 0 0 1
      1 1 1 0 1
  1 0 1 1 1 1 0 0

 10102 ∗ 1012

1 0 1 0
  1 0 1
    +     1 0 1 0
    1 0 1 0    
      1 1 0 0 1 0

 11000102 / 1012

  110010     101      
 -101     1010      
      101          
     -101          
          00          
                 

 

 Свойства двоичных чисел

Число 2N в двоичной системе счисления записывается как единица и N нулей, например

24 = 100002.

Аналогично, для любой другой системы счисления, число qN в q-ой системе счисления записывается как единица и N нулей, например

33 = 10003.

Число 2N - 1 в двоичной системе счисления записывается как N единиц, например

24 - 1 = 1510 = 11112.

Для любой системы счисления, число qN - 1 в q-ой системе счисления записывается как N цифр (q-1), например

34 - 1 = = 22223.

Число 2N - 2K , при K < N в двоичной системе счисления записывается как (N - K) единиц и K нулей, например

25 - 22 =  111002.

Для системы счисления с основанием q, число qN - qK , при K < N записывается как (N - K) цифр (q-1) и K нулей, например

35 - 32 =  222003.

Имеют место быть выражения:

2N + 2N = 2 ∗ 2N = 2N+1,

2N = 2N+1 - 2N,

 - 2N = - 2N+1 + 2N.

Задачи для самостоятельного решения