
- •Программирование на языках высокого уровня. Алгоритмические языки
- •Содержание
- •Разработка (проектирование) одномодульных программ
- •Представление информации в языке Си
- •Массивы
- •УказатеЛи
- •Выражения и операции
- •Управляющие операторы
- •Функции
- •Типы данных, определяемые пользователем
- •Приемы программирования
- •Приложение 2. Арифметические основы компьютеров
- •Литература
Приложение 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
Люди предпочитают десятичную систему, вероятно, потому, что с древних времен считали по пальцам, а пальцев у людей по десять на руках и ногах. Не всегда и не везде люди пользуются десятичной системой счисления. В Китае, например, долгое время пользовались пятеричной системой счисления.
А компьютеры используют двоичную систему потому, что она имеет ряд преимуществ перед другими системами:
для ее реализации нужны технические устройства с двумя устойчивыми состояниями (есть ток — нет тока, намагничен — не намагничен и т.п.), а не, например, с десятью, — как в десятичной;
представление информации посредством только двух состояний надежно и помехоустойчиво;
возможно применение аппарата булевой алгебры для выполнения логических преобразований информации;
двоичная арифметика намного проще десятичной.
Недостаток двоичной системы — быстрый рост числа разрядов, необходимых для записи чисел.
Почему в компьютерах используются также восьмеричная и шестнадцатеричная системы счисления?
Двоичная система, удобная для компьютеров, для человека неудобна из-за ее громоздкости и непривычной записи.
Перевод чисел из десятичной системы в двоичную и наоборот выполняет машина. Однако чтобы профессионально использовать компьютер, следует научиться понимать слово машины. Для этого и разработаны восьмеричная и шестнадцатеричная системы.
Числа в этих системах читаются почти так же легко, как десятичные, требуют соответственно в три (восьмеричная) и в четыре (шестнадцатеричная) раза меньше разрядов, чем в двоичной системе (ведь числа 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