Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Програм-е на ЯВУ / Программирование на языках выского уровня, алгоритмические языки.doc
Скачиваний:
63
Добавлен:
11.04.2014
Размер:
1.74 Mб
Скачать

Приложение 2. Арифметические основы компьютеров

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

Система счисления – это способ записи чисел с помощью заданного набора специальных знаков (цифр).

Существуют позиционные и непозиционные системы счисления.

В непозиционных системах вес цифры (т.е. тот вклад, который она вносит в значение числа) не зависит от ее позиции в записи числа. Так, в римской системе счисления в числе XXXII (тридцать два) вес цифры X в любой позиции равен просто десяти.

В позиционных системах счисления вес каждой цифры изменяется в зависимости от ее положения (позиции) в последовательности цифр, изображающих число. Например, в числе 757.7 первая семерка означает 7 сотен, вторая – 7 единиц, а третья – 7 десятых долей единицы.

Сама же запись числа 757.710 означает сокращенную запись выражения

700 + 50 + 7 + 0.7 = 7•102 + 5•101 + 7•100 + 7•10-1 = 757.7

Любая позиционная система счисления характеризуется своим основанием.

Основание позиционной системы счисления — это количество различных знаков или символов, используемых для изображения цифр в данной системе.

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

an-1 qn-1 + an-2 qn-2+ ... + a1 q1 + a0 q0 + a-1 q-1 + ... + a-m q-m,

где ai – цифры системы счисления; n и m – число целых и дробных разрядов, соответственно.

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

Двоичная система счисления имеет основание 2, и, следовательно, две разные цифры - 0 и 1; восьмеричная – восемь цифр – 0, 1, 2, 3, 4, 5, 6, 7, шестнадцатеричная – шестнадцать цифр – десять арабских цифр от 0 до 9 и еще шесть символов – А (10), В (11), С (12), D (13), E (14), F (15).

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

10

2

8

16

0

0

0

0

1

1

1

1

2

1 0

2

2

3

1 1

3

3

4

1 0 0

4

4

5

1 0 1

5

5

6

1 1 0

6

6

7

1 1 1

7

7

8

1 0 0 0

1 0

8

9

1 0 0 1

1 1

9

10

1 0 1 0

1 2

A

11

1 0 1 1

1 3

B

12

1 1 0 0

1 4

C

13

1 1 0 1

1 5

D

14

1 1 1 0

1 6

E

15

1 1 1 1

1 7

F

16

1 0 0 0 0

2 0

1 0


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

Правила перевода целых и дробных чисел не совпадают, поэтому приведем три правила перевода чисел из системы счисления с основанием R в систему счисления с основанием Q.

Правило 1. Перевод целых чисел

Для перевода целого числа N, представленного в системе счисления с основанием R, в систему счисления с основанием Q необходимо данное число делить на основание Q по правилам системы счисления с основанием R до получения целого остатка, меньшего Q. Полученное частное снова необходимо делить на основание Q до получения нового целого остатка, меньшего Q, и т.д., до тех пор, пока последнее частное будет меньше Q. Число N в системе счисления с основанием Q представится в виде не упорядоченной последовательности остатков деления в порядке, обратном их получению (иными словами, старшую цифру числа N дает последнее частное).

Преобразуем десятичное число 67 в двоичную форму. Основание исходной системы счисления R=10. Основание новой системы счисления Q=2. Согласно приведенному правилу надо исходное число 67 делить на основание новой системы (на 2) по правилам десятичной системы счисления (исходная система счисления).

Числа записываются в обратном порядке: число 6710 в новой системе счисления равно 10000112.

Правило 2. Перевод правильной дроби.

Перевод правильной дроби, представленной в системе счисления с основанием R, в систему счисления с основанием Q заключается в последовательном умножении этой дроби на основание Q по правилам системы счисления с основанием R, причем перемножают только дробные части. Дробь N в системе счисления с основанием Q представляется в виде упорядоченной последовательности целых частей произведений в порядке их получения. (Иными словами, старший разряд является первой цифрой произведения). Количество последовательных произведений определяет количество цифр в полученном числе.

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

Переведём в двоичную систему счисления десятичную дробь 0,7243. Основание исходной системы счисления R=10. Основание новой системы счисления Q=2. Согласно приведенного правила исходное число 0,7243 надо умножать на основание новой системы (на 2) по правилам десятичной системы счисления (исходная система счисления). Выполним серию умножений до получения, например, шести цифр в двоичном числе:

Искомые цифры дроби:

0,7243 * 2 = 1,4486 1 - Старшая цифра.

0,4486 * 2 = 0,8972 0

0,8942 * 2 = 1,7944 1

0,7944 * 2 = 1,5888 1

0,5888 * 2 = 1,1776 1

0,1776 * 2 = 0,3552 0

0,3552 * 2 = 0,7104 0

Искомое представление число 0,7243 в двоичной системе счисления = 0,101110.

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

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

Примеры.

Десятичная дробь 0.2 представляется бесконечной дробью 0.33333... в шестнадцатеричной системе счисления (основания систем счисления 10 и 16).

Шестнадцатеричная дробь 0.В1 представляется конечной дробью 0.10110001 в двоичной системе счисления (основания систем счисления 16 и 2).

Правило 3. Перевод неправильной дроби:

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

67.724310 = 1000011.1011102

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

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

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

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

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

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

  4. двоичная арифметика намного проще десятичной.

Недостаток двоичной системы — быстрый рост числа разрядов, необходимых для записи чисел.

Почему в компьютерах используются также восьмеричная и шестнадцатеричная системы счисления?

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

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

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

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

Например:

Преобразуем восьмеричное число 371.62, т.к. 3 = 011; 7 = 111; 1 = 001; 6 = 110; 2 = 010, то 371.62 = 011 111 001 . 110 010, или 371.62 = 11111001.11001 (отбрасываем нули слева и справа).

Преобразуем шестнадцатеричное число 6C.7D в двоичную форму. Для этого запишем для каждой цифры соответствующую тетраду: 6 = 0110; C = 1100; 7 = 0111; D = 1101.

6C.7D = 01101100.01111101 = 1101100.01111101 (отбрасываем нули слева и справа).

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

Например:

Представим двоичное число 1101100.01111101 в форме восьмеричного числа. Дополним до трех цифр нулями самую левую группу слева и самую правую группу справа:

001 101 100 . 011 111 010

Заменим каждую триаду соответствующей восьмеричной цифрой:

001 101 100 . 011 111 100 = 154.372

Представим двоичное число 1101100.01111101 в форме шестнадцатеричного числа. Разобьем исходное число на группы по четыре цифры, приняв в качестве точки отсчета местоположение запятой, и дополним до четырех цифр нулями слева самую левую группу: 0110 1100 . 0111 1101. Заменим каждую тетраду соответствующей шестнадцатеричной цифрой: 0110 1100 . 0111 1101 = 6С.7D.

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

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

Например:

510 + 610 = 1110

Выполним то же сложение в двоичной системе счисления

1 0 1

+ 1 1 0

1 10 01 01

То есть

1012 + 1102 = 10102 = 1110