Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекция_2_системы счисления

.doc
Скачиваний:
2
Добавлен:
11.11.2018
Размер:
109.57 Кб
Скачать

ЛЕКЦИЯ 2

АРИФМЕТИЧЕСКИЕ И ЛОГИЧЕСКИЕ ОСНОВЫ ПОСТРОЕНИЯ ЭВМ

2.1. Системы счисления, применяемые в ЭВМ

Способ представления (записи) чисел с помощью цифровых знаков называется системой счисления. Для записи чисел в конкретной системе счисления используется некоторый конечный алфавит, состоящий из цифр а1, a2, a3, .... аn. При этом каждой цифре а1, a2, a3, .... аn в записи числа ставится в соответствие определенный количественный эквивалент (ее «вес»). Если коли­чественное значение цифры зависит от вида этой цифры и ее позиции в записи числа, то такая система счисления называется позиционной. Благодаря на­глядности представления чисел и сравнительной про­стоте выполнения арифметических операций в ЭВМ применяются только позиционные системы счисления.

Количество различных цифр в алфавите позицион­ной системы счисления называется основанием S этой системы. Любое число N в позиционной системе счи­сления можно представить суммой произведений целых однозначных коэффициентов аi, взятых из алфавита системы, на последовательные целые степени основания 5:

Ns = amSm + am-lSm-l + ... ... + aiSl + aoS0 + a-1S-1+a-2S-2 + ....

Сокращенная запись числа Ns имеет вид Ns = amam-1_...a1aoa-1... .

При этом позиции цифр а, в этой записи называются разрядами, причем старшие разряды, соответ­ствующие более высоким степеням основания S, рас­полагаются обычно слева, а младшие — справа. Цифры ai в любом i-м разряде могут принимать S различных значений, при этом всегда ai <S.

В ЭВМ применяются десятичная, двоичная, вось­меричная и шестнадцатеричная системы счисления.

Алфавит десятичной системы счисления состоит из десяти различных цифр: 0, 1, 2, .... 9. В этой системе «вес» каждого разряда в 10 раз боль­ше «веса» предыдущего. Например, в записи 1987 цифра 1 означает число тысяч, цифра 9 — число сотен, цифра 8 — число десятков и цифра 7 — число единиц. Всякое число в десятичной системе счисления можно представить суммой различных целых степеней десяти (S = 10) с соответствующими коэффициен­тами ai (0, 1, 2, .... 9):

N10=am10m + am-l0m-1 + ... ... + a1101 + а0100 + a-1,10-1 + ...,

где а0, а1, ..., ат — количество единиц, десятков, со­тен и т. д.; а-1, а-2, ... — количество десятых, сотых, тысячных и т. д. долей единицы.

Для физического представления (изображения) чисел необходимы элементы, способные находиться в одном из нескольких устойчивых состояний. Число этих состояний должно быть равно основанию при­нятой системы счисления. Тогда каждое состояние будет представлять соответствующую цифру из алфавита данной системы счисления. Наиболее про­стыми с точки зрения технической реализации являются так называемые двухпозиционные элементы, способ­ные находиться в одном из двух устойчивых состоя­ний, например: электромагнитное реле замкнуто или разомкнуто, ферромагнитная поверхность намагни­чена или размагничена, магнитный сердечник на­магничен в одном направлении или в противополож­ном, транзисторный ключ находится в проводящем состоянии или запертом, и т. д. Одно из этих устой­чивых состояний может представлять цифру 0, а дру­гое — цифру 1.

Простота технической реализации двухпозиционных элементов обеспечила наибольшее распростране­ние в ЭВМ двоичной системы счисления, основание которой S = 2; в ней используются лишь две цифры: 0 и 1. Любое действительное число в двоичной системе счисления представляется в виде суммы целых степеней основания S = 2, умноженных на соответствующие коэффициенты (0 или 1). Напри­мер, двоичное число 11011,012 = 1 • 24 + 1 • 23 + 0 • 22 + 1 • 21 + 1 • 20 +0• 2-1 + 1 • 2-2 = 16 + 8 + 2 + 1 + 0,25 = 27,2510 соответствует десятич­ному числу 27,2510.

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

Кроме двоичной в ЭВМ используются также вось­меричная и шестнадцатеричная системы счисления. Основания этих систем соответствуют целым степеням числа 2 (8 = 23; 16 = 24), поэтому для них исключи­тельно просты правила перевода в двоичную систему счисления, и наоборот. Восьмеричная и шестнадцате­ричная системы счисления применяются в процессе программирования для сокращенной и удобной записи двоичных кодов команд программы.

В восьмеричной системе счисления используются восемь цифр - от 0 до 7, а любое число представляется суммой целых степеней основания S=8, умноженных на соответствующие коэффици­енты ai =07. Например, десятичное число 215 за­писывается в восьмеричной системе счисления следую­щим образом:

21510=3·82+2·81 +7·80= 3278.

192 +16+7 = 215

В шестнадцатеричной системе счис­ления алфавит цифровых знаков состоит из 16 симво­лов, причем в качестве первых десяти символов ис­пользуются арабские цифры от 0 до 9, а дополнитель­но к ним применяются буквенные символы: 10—А, 11—В, 12—С, 13—D, 14—Е, 15—F. С помощью дан­ного алфавита можно записать все десятичные числа от 0 до 15 включительно, а затем 1610 = 1 • 161 + 0• 160= 1016; 1710= 1 • 161 + 1• 160= 1116; 1810 = 1 • 161 + 2• 160= 1216 и т. д.

Число 215 в шестнадцатеричной системе счисления запишется следующим образом:

21510 =D • 161 + 7• 160= D716 (3×16 =208) + (7×1 = 7) 215

В табл. 2.1 приведены записи чисел от 0 до 20 в различных системах счисления.

Таблица 2.1 - Записи чисел от 0 до 20 в различных системах счисления

Десятичная

система

Двоичная

система

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

система

Шеснадцатеричная

система

Десятичная

система

Двоичная

система

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

система

Шеснадцатеричная

система

0

0

0

0

11

1011

13

B

1

1

1

1

12

1100

14

C

2

10

2

2

13

1101

15

D

3

11

3

3

14

1110

16

E

4

100

4

4

15

1111

17

F

5

101

5

5

16

10000

20

10

6

110

6

6

17

10001

21

11

7

111

7

7

18

10010

22

12

8

1000

10

8

19

10011

23

13

9

1001

11

9

20

10100

24

14

10

1010

12

А

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

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

Рассмотрим примеры использования данного спо­соба.

1. Переведем десятичное число 377 в двоичную систему счисления. Наибольшая степень нового осно­вания S = 2, не превышающая числа 377, равна 8 (так как 28 = 256, а 29 = 512). Таким образом, после­довательность расположения степеней начинается с 28 и заканчивается 20. Из этих степеней подбираем те, которые при суммировании дают результат, равный 377. Затем перед членами, которые участвовали в сум­мировании, поставим коэффициент 1, а которые не участвовали — 0. Окончательная запись двоичного числа состоит из этих коэффициентов:

37710=1·28 + 0·27 +1·26 +1·25 + 1·24 +1·23 +0·22 +0·21 +1·20 =

256 + 0 + 64+32 + 16 + 8 + 0 + 0

377

= 1011110012.

2. Выполним перевод этого же числа 37710 в вось­меричную систему счисления. Наибольшая степень восьми, не превышающая 377, равна 2; таким обра­зом, последовательность степеней будет состоять из 82, 81, 80. Подбирая к ним коэффициенты из алфавита восьмеричной степени счисления (от 0 до 7), оконча­тельно получим

37710 =5·82 + 7·81 + 1·81 = 5718

320 + 56 + 1

377

3. Выполним перевод числа 37710 в шестнадцатеричную систему счисления:

37710 = 1·162 + 7·161 + 9·160 = 17916.

256+ 112 + 9

377

4. Переведем восьмеричное число 5718 и шестнадцатеричное число 17916 в двоичную систему счисления. Для этого заменим каждую цифру этих чисел соответ­ственно 3-разрядным или 4-разрядным двоичным числом. Отбросив при этом ненужные нули, получим

( 5 7 1 ) = 1011110012

101 111 001

( 1 7 9 ) = 1011110012

0001 0111 1001

В обоих случаях имеем одинаковый результат 5718 = 17916 = 101111012, совпадающий с результа­том, полученным непосредственным переводом в дво­ичную систему счисления исходного десятичного чи­сла 37710.

Табличный способ применим и при переводе пра­вильных десятичных дробей в двоичную, восьмерич­ную или шестнадцатеричную систему счисления. При этом необходимо пользоваться таблицей отрицатель­ных степеней нового основания. Проиллюстрируем примером перевода десятичной дроби 0,3125 соответ­ственно в двоичную, восьмеричную и шестнадцатерич­ную системы счисления:

0,312510 = 0·2-1 + 1·2-2 + 0·2-3 + 1·2-4 = 0,01012;

0 + 0,25 + 0 + 0,0625 = 0,3125

0,312510 = 2·8-1 + 4·8-2 = 0,248

0.25 + 0,0625 = 0,3125

0,312510 = 5·16-1 = 0,516.

0,3125

5. Переводим восьмеричное число 0,248 и шестнадцатеричное 0,5!6 в двоичную систему счисления:

(0, _2_ _4_ )8 = 0,01012. (0, _5_)16 = 0,01012. 010 100 0101

В обоих случаях имеем одинаковый результат 0,248 = 0,516 = 0,01012, совпадающий с результатом, полученным непосредственным переводом в двоичную систему счисления исходной десятичной дроби 0,312510.

Рассмотрим общие правила перевода из одной позиционной системы счисления в другую.

1. Перевод целого числа из системы счисления с основанием S в другую систему с основанием q осу­ществляется последовательным делением его на осно­вание q новой системы счисления до тех пор, пока не получится частное, меньшее q. Число в новой системе запишется в виде остатков деления, начиная с послед­него. Указанное деление выполняется в исходной си­стеме счисления.

Проиллюстрируем это правило примерами.

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

S = 2 новой системы:

377 2 188 2 94 2 47 2 23 2 11 2 5 2 2 2 1 2

188+1 94 + 0 47 +0 23 +1 11 +1 5 +1 2+1 1+0 0+1

        

1 0 0 1 1 1 1 0 1

           

1011110012

Аналогично выполним перевод в восьмеричную и шестнадцатеричную системы счисления:

377 8 47 : 8 5:8 377 16 23 16 1 16

47 + 1 5+7 0+5 23 + 9 1 + 7 0 + 1

     

1 7 5 9 7 1

      5718       17916

Остатки от соответствующих делений дают записи в новых системах счисления, т. е. 37710 = 1011110012 = = 5718 = 17916. Эти результаты полностью совпадают с теми, которые были ранее получены табличным способом.

2. Перевод правильной дроби из одной позицион­ной системы счисления в другую осуществляется последовательным умножением ее на основание S новой системы счисления; при этом перемножаются только дробные части. Дробь в новой системе счисления записывается в виде целых частей получающихся произведений начиная с первого.

Проиллюстрируем это правило на примере перево­да десятичной дроби 0,6875 в двоичную, восьмеричную и шестнадцатеричную системы счисления:

0,6875 0,3750 0,7500 0,5000

× 2 × 2 × 2 × 2

1,3750 0,7500 1,5000 1,0000

   

1 0 1 1

      0,10112

0,6875 0,5000 0,6875

× 8 × 8 × 16

5,5000 4,0000 11,0000

  

5 4 В

   0,548   0,В16

В шестнадцатеричной системе счисления целая часть произведения 11 запишется символом В (см. таблицу 2.1), поэтому окончательно получим 0,687510 = 0,10112 = 0,548 = 0,В16.

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

  1. Для перевода неправильных десятичных дробей (например, 15,6875) необходимо, пользуясь приведен­ными правилами, выполнить отдельно перевод целой и дробной частей.

  2. Обратный перевод в десятичную систему счисле­ния из других позиционных систем выполним, поль­зуясь позиционной записью данного числа. Для чего представим его в виде суммы степеней своего осно­вания, подсчитаем значения десятичных эквивалентов отдельных разрядов, а затем их просуммируем.

Покажем это на примерах:

101,012 = 1·22 + 0·21 + 1·20 + 0·2-1 + 1·2-2 = = 4 + 0+1+0 + 0,25 = 5,2510;

46,28 = 4·81 + 6·80 + 2·8-1 = 32 + 6 + 0,25 = 38,2510;

1F,A= 1·161 + 15·160+ 10·16-1 = 16+ 15 + 0,625=31,62510.

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

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

Сложение одноразрядных двоичных чисел производится по следующим правилам: 0 + 0 = 0; 0+1 = 1; 1+0=1; 1+1=0 +1 — единица переноса в старший разряд. Пользуясь этими правилами, можно выполнить сложение многоразряд­ных двоичных чисел подобно тому, как это делается в десятичной системе счисления. Необходимо только при этом учитывать, что 1 + 1 дает нуль в данном разряде и единицу переноса в следующий старший разряд.

Покажем это на примере сложения двоичных чисел 1100 (двенадцать) и 110 (шесть):

1100 (12)

+110 (6)

10 010 (18)

Проверим результат: 100102 = l 24 + 0 23 + 0 22 + 121+0 20 = 16+0 + 0 + 2 + 0 = 1810

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

Вычитание двоичных чисел выполняет­ся по следующим правилам:

0 — 0 = 0; 1—0=1; 1 — 1=0; 10 — 1 = 1. При вычитании многоразряд­ных двоичных чисел может возникнуть необходимость заема единицы в ближайшем старшем разряде, что дает две единицы в младшем разряде. Если в соседних старших разрядах стоят нули, то приходится занимать единицу через несколько разрядов. При этом единица, занятая в ближайшем значащем старшем разряде, дает две единицы в данном младшем разряде и едини­цы во всех нулевых разрядах, стоящих между данным и тем старшим разрядом, у которого брался заем. Например,

10010 (18)

- 101 (5)

1101 (13)

Проверим результат:

11012= 123 + 122 + 021 + 120= 8+ 4 + 0+ 1 = 1310

Умножение двоичных чисел выполня­ется по следующим правилам: 00 = 0; 01 = 0; 10 = 0; 11 = 1. Умножение многоразрядных двоич­ных чисел сводится к умножению множимого на каждый разряд множителя, последующему сдвигу множимого или множителя и суммированию обра­зующихся частичных произведений. При этом каждое частичное произведение равно 0, если в соответствую­щем разряде множителя стоит «0», или равно мно­жимому, сдвинутому на соответствующее число раз­рядов влево, если в разряде множителя стоит «1». Например,

1001 (9)

110 (6)

0000

1001

1001

110110 (54)

Проверим результат: 1101102 = 125 + 124 + 023+ 122+ 121 +02° = 32+16 + +0 + 4 + 2 + 0= 5410.

Деление двоичных чисел сводится к выполнению вычитаний и сдвигов. Используя преды­дущий пример, выполним деление 110110(54) на 110 (9):

_ 110110 [110

110 1001

- 000110

- 110

000

Проверим результат:

10012 = 123+ 022 + 02l + 120 = 8 + 0 + 0 + 1= 910. т. е. 54 : 6 = 9.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]