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

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

 

Разнообразные системы счисления, которые существовали раньше и ко­торые исполь­зуются в наше время, можно разделить на непозиционные и по­зиционные. Знаки, ис­поль­­зуемые при записи чисел, называются цифра­ми.

 

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

 

I V  X  L  C  D  M     

1    5  10 50 100 500 1000

 

Например: VI = 5 + 1 = 6,  а  IX = 10 - 1 = 9.

 

Недостатки непозиционных систем счисления:

1) для записи больших чисел требуется вводить новые обозначения, которых будет все больше и больше;

2)  непонятно, как записывать дробные и отрицательные числа

3) Не существует алгоритмов выполнения арифметических операций

 

В позиционных системах счисления величина, обозначаемая цифрой в записи числа, зависит от ее места в числе (позиции). Позиция цифры в числе называется разрядом. Разряд числа возрастает справа налево, от младших разрядов к старшим.

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

 

Однако наибольшую ценность для нас имеет индо-арабская десятичная система. Индийцы первыми использовали ноль для указания позиционной зна­чимос­ти величины в строке цифр. Эта система получила название де­ся­тич­ной, так как в ней десять цифр.

 

Для того чтобы лучше понять различие позиционной и непозиционной систем счисления, рассмотрим пример сравнения двух чисел. В позиционной системе счисления сравнение двух чисел происходит следующим образом: в рассматриваемых числах слева направо сравниваются цифры, стоящие в оди­наковых позициях. Большая цифра соответствует большему значению числа. Например, для чисел 123 и 234, 1 меньше 2, поэтому число 234 больше, чем число 123. В непозиционной системе счисления это правило не действует. Примером этого может служить сравнение двух чисел IX и VI. Несмотря на то, что I меньше, чем V, число IX больше, чем число VI.

 

Далее мы будем рассматривать только позиционные системы счисления.

 

Основание системы счисления, в которой записано число, обычно обоз­на­­чается нижним индексом. Например, 5557 - число, записанное в семе­рич­ной системе счисления. Если число записано в десятичной системе, то осно­вание, как правило, не указывается. Основание системы - это тоже число, и его мы будем указывать в обычной десятичной системе. Вообще, число X в системе счисления с основанием q означает значение многочлена:

 

 X = an*qn  + an-1*qn-1 + …+ a1*q1 + a0*q0 +

 a-1*q-1 + a-2*q-2 + … + a-m*q-m  ,

 

где an...a0 - цифры в представлении данного числа.

Значения цифр изменяются от 0 до q-1.

 

Так, например,

 

123510 =1*103 + 2*102 + 3*101 + 5*100

12358 =1*83 + 2*82 + 3*81 + 5*80 = 1* 512 + 2*64 + 3*8 + 5 = 66910

11012 = 1*23 + 1*22 + 0*21 + 1*20 = 8 + 4 + 1 = 1310

B616 = 11*16 + 6 = 176 + 6 = 18210

Обратите внимание на то, что чем больше основание системы счисле­ния, тем больше число, записанное определенной последовательнос­тью цифр, например: 123510 > 12358, но однозначные числа (состоящие из одной цифры) имеют одно и то же значение во всех системах счисления: 510 = 58.

 

Наибольший интерес при работе на ЭВМ представляют системы счис­ле­ния с основаниями 2, 8 и 16. Вообще говоря, этих систем счисления обыч­но хватает для полноценной работы как человека, так и вычислительной маши­ны. Однако иногда в силу различных обстоятельств все-таки приходится об­ращаться к другим системам счисления, например к троичной, семеричной или системе счисления по основанию 32. Для того чтобы нормально оперировать с числами, записанными в таких нетрадиционных системах, важно понимать, что принципиально они ничем не отличаются от привычной нам десятичной. Сложение, вычитание, умножение в них осуществляется по одной и той же схеме.

 

В вычислительных же машинах используется двоичная система счис­ле­ния, так как оперировать с числами, записанными в двоичном виде, до­воль­но просто. Часто в информатике используют шестнадцатеричную систему, так как запись чисел в ней значительно короче записи чисел в двоичной системе. Может возникнуть вопрос: почему бы не использовать для записи очень боль­ших чисел систему счисления, например по основанию 50? Для такой системы счисления необходимы 10 обычных цифр плюс 40 знаков, которые соответствовали бы числам от 10 до 49 и вряд ли кому-нибудь понравится работать с этими сорока знаками. Поэтому в реальной жизни системы счис­ления по основанию, большему 16, практически не используются.

 

Следует отметить, что большинство калькуляторов, реализованных на ЭВМ (в том числе и Calc), позволяют осуществлять работу в системах счис­ления с основаниями 2, 8, 16 и, конечно, 10.

 

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

 

Люди предпочитают десятичную систему, вероятно, потому, что с древ­них времен считали по пальцам. Но, не всегда и не везде люди пользовались десятичной системой счисления. В Китае, например, долгое время приме­ня­лась пятеричная система счисления. В ЭВМ используют двоичную систему потому, что она имеет ряд преимуществ перед другими:

 

· для ее реализации используются технические элементы с двумя воз­можными состояниями (есть ток - нет тока, намагничен – ненамагни­чен);

· представление информации посредством только двух состояний на­деж­но и помехоустойчиво;

· возможно применение аппарата булевой алгебры для выполнения логических преобразований информации;

· двоичная арифметика проще десятичной (двоичные таблицы сложения и умножения предельно просты).

 

В двоичной (binary) системе счисления всего две цифры, называемые дво­ичны­ми (binary digits). Сокращение этого наименования привело к появлению тер­мина бит, ставшего наз­ванием разряда двоичного числа. Веса разрядов в дво­ичной системе изменяются по степе­ням двойки. Поскольку вес каждого раз­ря­да умножается либо на 0, либо на 1, то в резуль­тате значение числа опреде­ляется как сумма соответствующих значений степеней двойки. Если какой-ли­бо разряд двоичного числа равен 1, то он называется значащим разрядом. За­пись числа в двоичном виде намного длиннее записи в десятичной системе счисления.

 

Арифметические действия, выполняемые в двоичной системе, подчиня­ют­ся тем же правилам, что и в десятичной системе. Только в двоичной сис­теме перенос единиц в старший разряд возникает чаще, чем в десятичной. Вот как выглядит таблица сложения в двоичной системе:

 

0 + 0 = 0 0 + 1 = 1   

1 + 0 = 1 1 + 1 = 10 (перенос в старший разряд)

 

 

Таблица умножения для двоичных чисел еще проще:

0 * 0 = 0  0 * 1 = 0 1 * 0 = 0 1 * 1 = 1    

 

Пример выполнения операции сложения в двоичной системе счисления:

 

1 1  1

1 0 1 12 Красным цветом показан перенос из младших разрядов в

 + 1 1 02 старшие

 


1 0 0 0 12

 

Для проверки правильности выполнения операции переведем все три чис­ла из двоичной системы в 10-ую:

 

1011 = 1*23 + 1*21 + 1 = 8 + 2 + 1 = 1110

3 2 1 0

 

110 = 1*22 + 1*21  = 4 + 2 = 610

 2 1 0

 

10001 = 1*24 + 1 = 16 + 1 = 1710

4 3 2 1 0

 

Сумма первых двух чисел (11 и 6) равна третьему числу (17), следователь­но операция выполнена верно.

Обратите внимание на то, что при добавлении к числу, состоящему из еди­ниц (11…1), еще одной единицы, получается число, равное 1 с количест­вом нулей, равным количеству единиц исходного числа, например:

1111 11112 + 1 = 1 0000 00002 = 28

 

Пример выполнения операции вычитания в двоичной системе счисле­ния:

Вычитание выполняется по тем же правилам, что и в 10-ой системе, но в 10-й системе при замене единицы старшего разряда она превращается в 10 еди­­ниц младшего разряда, а в 2-й системе – в 2 единицы. Если нужно про­извести заем не в соседнем разряде, а далее влево, то из каждых двух единиц текущего разряда одна остается в этом разряде, а вторая передается вправо. Сравните:

9  9 10                                   1  1  2

1 0 0 010                  1 0 0 02

-   1                     -   1

9 9 910                     1 1 12

 

Выполним в 2-й системе счисление вычитание 1710 – 610 :

0 1 1 2

1 0 0 0 12

-        1 1 02

 


1 0 1 12 = 1110 Проверка показывает, что вычитание выполнено верно.

 

Если в двоичной системе счисления из числа, являющегося степенью двойки, вычесть 1, то получается число, состоящее из единиц, количество которых равно количеству нулей двоичного числа, например:

28 - 1 = 1 0000 00002 – 1 = 1111 11112

1023 = 1024 – 1 = 210 – 1 = 11 1111 11112

 

Пример выполнения операции умножения в двоичной системе счисле­ния:

1 1 0 12 = 1310

*     1 0 12 = 510

 


1 1 0 1

+1 1 0 1

1 0 0 0 0 0 12 = 26 +1 = 64 +1 =6510     (13 * 5 = 65)

6  5  4   3    2 1 0

 

Рассмотрим подробнее, как процессор выполняет умножение двоичных чисел. Пусть надо умножить число 1101 на 101 (оба числа в двоичной сис­теме счисления). Машина де­лает это следующим образом: она берет число 1101 и, если первый справа элемент второго множи­теля равен 1, то она за­носит его в сумму. Затем сдвигает число 1101 влево на одну позицию, полу­чая тем самым 11010, и, если, второй элемент второго множителя равен еди­нице, то добавляет его к сумме. Если элемент второго множителя равен ну­лю, то сумма не изменяется. Этот процесс сдвигов и сложений повторяется.

Пример выполнения операции деления в двоичной системе счисле­ния:

 

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

В качестве примера разделим 14310 = 100011112 на 1310 = 11012

 

1 0 0 0 1 1 1 1  1 1 0 1

- 1 1 0 1      1 0 1 12 = 1110

1 0 0 1 1

- 1 1 0 1

1 1 0 1

- 1 1 0 1

0

Проверка показывает, что деление выполнено верно (143 / 13 = 11).

 

Умножение или деление двоичного числа на 2 приводит к перемещению запятой, отделяющей целую часть от дробной на один разряд соответственно вправо или влево:

10112 * 102 = 101102.

10112 / 102 = 101.12.

 




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

 

При наладке аппаратных средств ЭВМ или создании новой программы возникает необходимость "заглянуть внутрь" памяти машины, чтобы оценить ее текущее состояние. Но там все заполнено длинными последователь­нос­тя­ми нулей и единиц двоичных чисел. Эти последовательности очень неудобны для восприятия человеком, привыкшим к более короткой записи десятичных чисел. Кроме того, естественные возможности человеческого мышления не позволяют оценить быстро и точно величину числа, представленного, напри­мер, комбинацией из 16 нулей и единиц.

 

Для облегчения восприятия двоичного числа решили разбивать его на группы разрядов, например, по три или четыре разряда. Эта идея оказалась очень удачной, так как последовательность из трех бит имеет 8 комбинаций, а последовательность из 4 бит - 16. Числа 8 и 16 являются степенями двойки, поэтому легко находить соответствие с двоичными числами. Развивая эту идею, пришли к выводу, что группы разрядов можно закодировать, сократив при этом длину последовательности знаков. Для кодировки трех битов требу­ется восемь цифр, поэтому взяли цифры от 0 до 7 десятичной системы. Для кодировки же четырех битов необходимо шестнадцать знаков; для этого взя­ли 10 цифр десятичной системы и 6 букв латинского алфавита: A, B, C, D, E, F. Полученные системы, имеющие основания 8 и 16, назвали соответственно восьмеричной и шестнадцатеричной.

 

В восьмеричной (octal) системе счисления используются восемь раз­лич­ных цифр: 0, 1, 2, 3, 4, 5, 6, 7. Основание системы - 8. При записи отрица­тель­ных чисел перед последовательностью цифр ставят знак минус. Сло­же­ние, вычитание, умножение и деление чисел, представленных в восьмерич­ной системе, выполняются весьма просто, подобно тому, как это делают в общеизвестной десятичной системе счисления.

Пример выполнения операции сложения в восьмеричной системе счис­ления:

1  1                Красным цветом показан перенос из младших разрядов в старшие.

4 7 6             Выполнение операции в каждом разряде:

+  3 4                1) 6 + 4 = 10 = 1*8 + 2 = 128   

5 3 2           2) 1 + 7 + 3 = 1*8 + 3 = 138 

               3) 1 + 4 = 5

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

4768  = 4*82 + 7*8 + 6 = 318                   318

348 = 3*8 + 4 = 28                                   +28

532 = 5*82 + 3*8 + 2 = 346                     346

 

Пример выполнения операции вычитания в восьмеричной системе счис­ления:

7  8                Красным цветом показан перенос из старших разрядов в младшие.

5 3 2             Выполнение операции в каждом разряде:

- 3 4                1) 8 + 2 – 4 = 6  

4 7 6           2) 7 + 2 - 3 = 1 *8 + 3 = 138 

3) 1 + 4 = 5

Пример выполнения операции умножения в восьмеричной системе счис­ле­ния:

5 4                        54         4*4 = 16 = 2 *8 + 0 = 208 (записываем 0)

* 3 4                             * 4              2+ 5*4 = 22 = 2 *8 + 6 = 268

2 6 0                       260

+ 2 0 4                          

2 3 2 0                        54         4*3 = 12 = 1 *8 + 4 = 148 (записываем 4)

                                       * 3                      1 + 5*3 = 16 = 2 *8 + 0 = 208

                                     204

Выполним проверку:

548 = 5*8 + 4 = 4410                                          44

348 = 3*8 + 4 = 2810                                                    * 28

23208 = 2*83 + 3*82 + 2*8 = 123210                         352

                                                                      + 88      = 123210

Пример выполнения операции деления в восьмеричной системе счис­ле­ния:

 

  2 3 2 08    5 48

  - 2 0 4      3 48

2 6 0

-  2 6 0

0

Деление в восьмеричной системе близко делению в десятичной системе: нужно подобрать цифры частного. 232 делим на 54, в десятичной системе мы получили бы целое частное 4, но из предыдущего примера мы знаем, что в восьмеричной системе 54*4 = 260, это много, попробуем взять цифру поменьше – 3, умножаем 54*3 = 204, эта цифра подходит, и т.д.

 

В различных языках про­грам­мирования запись восьмеричных чисел начинается с 0, например, запись 011 означает десятичное число 9.

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

 

В шестнадцатеричной (hexadecimal) системе счисления применяются десять цифр от 0 до 9 и шесть первых букв латинского алфавита:

10 – A 11 – B 12 – C 13 – D 14 – E 15 – F.

 При запи­си отрицательных чисел слева от последовательности цифр ставят знак ми­нус.

Для того чтобы при написании компьютерных программ отличить чис­ла, записанные в шестнадцатеричной системе, от других, перед числом ста­вят 0x. То есть 0x11 и 11 - это разные числа.

Шестнадцатеричная система счисления широко используется при зада­нии различных оттенков цвета при кодировании графической информации (модель RGB). Так, в редакторе гипертекста Netscape Composer можно зада­вать цвета для фона или текста как в десятичной, так и шестнадцатеричной системах счисления (см. рисунок).

 

 

Пример выполнения операции сложения в 16-ой системе счис­ления:

 1 1                                 Красным цветом показан перенос из младших разрядов

A 7 B16                   Выполнение операции в каждом разряде:     

+  C 816                            B + 8 = 11 + 8 = 19 = 1*16 + 3 = 1316 (записываем 3)

 B 4 316                           1+7+С = 8+12 = 20 = 1*16 + 4 = 1416 (записываем 4)

                           1 + A = B

Проверим результат путем перевода чисел в 10-ю систему:

A7B16 = 10*162 + 7*16 +11 = 2683        

2 1  0                                                                                                                              2683

C816 = 12*16 + 8 = 200                                       + 200

1  0                                                                                                                                 2883

B4316 = 11*162 + 4*16 +3 = 2883                         

2 1  0

 

Пример выполнения операции вычитания в 16-ой системе счис­ления:

 

15 16                                   Красным цветом показан заем из старших разрядов

B 4 316                                 Выполнение операции в каждом разряде:

-  A 7 B16                                16 + 3 – B = 19 -11 = 8

  C 816                                 15 + 4 – 7 = 12 = C

                            B - 1 – A = 0

 

Умножение и деление в 16-ой системе обычно не выполняется ввиду сложности вычислений.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: