Позиционные системы счисления и операции над данными.
Системой счисления называется совокупность приемов и правил для представления чисел.
Для того, чтобы определить конкретную систему счисления, необходимо указать:
1). её алфавит;
2). тип;
3). правила, позволяющие по записи числа установить его значение.
Алфавит системы счисления образуют условные знаки, применяемые для обозначения чисел, называемые цифрами. Алфавит системы счисления состоит, как правило, из ограниченного количества цифр. Например, алфавит десятичной системы счисления состоит из 10 цифр: 0,1,2,3,4,5,6,7,8,9.
По типу различают системы счисления:
1). непозиционные;
2). позиционные.
Позиционной называется система счисления, в которой значение (вес) каждой цифры, входящей в запись числа, зависит от её позиции в ряду цифр, изображающих число.
Для определения значения числа недостаточно знания алфавита и типа системы счисления. Необходимо ещё знание правил, позволяющих по записи цифр установить значение числа.
Изображение числа в любой позиционной системе счисления можно представить в виде развернутой суммы:
здесь
- запись числа в системе счисления;
- основание системы счисления;
- цифры системы счисления;
- номер старшего разряда в записи числа;
- число знаков после запятой.
Для изображения числа обычно используется сокращенная запись:
Например, значение десятичного числа 123,45 может быть представлено в виде:
Выбор системы счисления для компьютера определяется следующими факторами:
1).надежность представления чисел при использовании конкретных физических элементов (триггеров);
2).экономичность представления чисел с минимальным алфавитом системы счисления;
3).простота логики выполнения арифметических операций;
4).минимальное время выполнения операций;
5).расход оборудования на их выполнение;
6).погрешность представления чисел;
7).удобство работы человека с компьютером.
Как оказывается, двоичная система счисления с минимальным алфавитом из двух цифр 0 и 1 и основанием 2, несколько уступая другим, по совокупности этих требований является наиболее приемлемой.
Так вот, внутренняя форма представления данных в цифровых вычислительных машинах и самых первых и современных основана на двоичной системе счисления.
Что же касается внешней формы представления, то в современных компьютерах наряду с привычной десятичной системой используются:
1). восьмеричная {0,1,2,3,4,5,6,7} и
2). шестнадцатеричная {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}
Для перевода чисел из одной системы счисления в другую можно воспользоваться формулой для Nr.
Для перевода целого числа Nr из десятичной системы в систему с основанием r представим его в виде:
Если разделить Nr на r, получим в остатке a0 и частное:
Отсюда следует правило: для перевода целой части десятичного числа в систему счисления с основанием r необходимо выполнять целочисленное деление целой части заданного десятичного числа на r, фиксируя остатки, до тех пор, пока очередная целая часть частного не окажется равной 0, а затем выписать остатки в порядке, обратном их получению.
Например, для перевода целой часть числа 45,75 в двоичную систему счисления следует выполнить последовательное деление:.
45 : 2 = 22 (ост. 1),
22 : 2 = 11 (ост. 0),
11 : 2 = 5 (ост. 1),
5 : 2 = 2 (ост. 1),
2 : 2 = 1 (ост. 0),
1 : 2 = 0 (ост. 1).
Записываем остатки в порядке, обратном их получению: 101101, то есть 4510 = 1011012.
Для перевода дробного числа Nr из десятичной системы в систему с основанием r представим его в виде:
Умножив это число на r по правилам десятичной арифметики, получим целую часть a-1 и новое дробное число:
Отсюда следует правило: для перевода дробной части десятичного числа заданную дробную часть, а затем дробные части получающихся произведений следует последовательно умножать на r до тех пор, пока очередная дробная часть произведения не окажется равной нулю или не будет достигнута нужная точностьдроби.
Целые части полученных произведений, записанные последовательно слева направо после запятой в искомом числе, образуют дробную часть искомого числа. Например, для перевода дробной часть числа 45,75 в двоичную систему счисления следует выполнить последовательное умножение:.
0,75 * 2 = 1,50,
0,50 * 2 = 1,00 (дробная часть числа равна 0, стоп).
Записываем последовательно слева направо целые части полученных произведений после запятой в искомом числе – 0,11; то есть 0,7510 = 0,112.
Для перевода произвольного десятичного числа в новую систему счисления нужно отдельно преобразовать его целую и дробную части. Окончательно: 45,7510 = 101101,112.
Перевод чисел из системы счисления с основанием r в десятичную сводится к нахождению суммы произведений коэффициентов ai в формуле для Nr на соответствующие степени основания ri. Например,
Правила перевода чисел из двоичной системы счисления в восьмеричную или шестнадцатеричную (или другие с основанием 2i) туда и обратно выполняется весьма просто. Для перевода двоичного числа в восьмеричную систему счисления следует сначала разбить исходное число на триады (тройки) справа налево, каждой из которых поставить в соответствие восьмеричную цифру:
Для перевода двоичного числа в шестнадцатеричную систему счисления следует сначала разбить исходное число на тетрады (четверки) справа налево, каждой из которых поставить в соответствие шестнадцатеричную цифру:
Десятичная | Двоичная | Восьмеричная | Шестнадцатеричная |
A | |||
B | |||
C | |||
D | |||
E | |||
F |
Двоичная арифметика.
Правила выполнения арифметических операций над двоичными числами задаются таблицами двоичного сложения, вычитания и умножения:
Сложение | Вычитание | Умножение |
0+0=0 | 0-0=0 | 0×0=0 |
0+1=1 | 1-0=1 | 0×1=0 |
1+0=1 | 1-1=0 | 1×0=0 |
1+1=0 единица переносится в старший разряд | 10-1=1 | 1×1=1 |
При сложении в каждом разряде в соответствии с таблицей сложения производится сложение двух цифр слагаемых или этих двух цифр и 1, если есть перенос из младшего разряда. В результате получается цифра соответствующего разряда суммы и, возможно, также 1 переноса в старший разряд. Например:
Переносы | 1 111 | ||
110111,01 | 55,25 | ||
+ 10011,10 | + 19,50 | ||
1001010,11 | 74,75 | ||
При вычитании двоичных чисел в данном разряде при необходимости занимается 1 из следующего разряда. Эта занимаемая 1 равна двум 1 данного разряда. Заем производится каждый раз, когда цифра в разряде вычитаемого больше цифры в том же разряде уменьшаемого. Например:
11011,10 |
- 1101,01 |
1110,01 |
Умножение двоичных многоразрядных чисел производится путем образования частичных произведений и последующего их суммирования. В соответствии с таблицей двоичного умножения каждое частичное произведение равно 0 , если в соответствующем разряде стоит 0 или равно множимому, сдвинутому на соответствующее число разрядов влево, если в разряде множителя стоит 1. Таким образом, операция умножения многоразрядных двоичных чисел сводится к операциям сдвига и сложения. Положение запятой определяется как при умножении десятичных чисел.
Например:
1011,1×101,01=111100,011 | |
× 10101 | |
В компьютере представление двоичных чисел лимитируется размером (длиной) разрядной сетки. С целью упрощения арифметических операций применяются специальные коды для представления чисел. При помощи этих кодов упрощается определение знака результата операции, операция вычитания (или алгебраического сложения) чисел сводится к арифметическому сложению их кодов, облегчается выработка признаков переполнения разрядной сетки. В результате упрощаются устройства ЭВМ, выполняющие арифметические операции. Для представления (отрицательных) чисел применяются прямой, обратный и дополнительный коды.
Для представления положительных чисел используется прямой код. Например, число 2009 в 16-разрядной сетке будет представлено двоичным числом 0000011111011001.
Для представления отрицательных чисел в компьютере используют дополнительный код. Дополнительный код представляет собой дополнение модуля отрицательного числа до 0. Алгоритм получения дополнительного кода для отрицательного числа состоит из 3-х шагов. :
1. Записать модуль числа в прямом коде в n двоичных разрядах. Число 2009 в двоичной системе счисления равно 11111011001. Прямой 16-разрядный код числа 2009 равен 0000011111011001.
2. Получить обратный код, инвертируя значения всех битов в прямом коде числа. В нашем примере получим обратный код: 1111100000100110.
3. Прибавить 1 к полученному обратному коду.
1111100000100110 + 1 = 1111100000100111
Итак, отрицательное число –2009 в 16-разрядном компьютерном представлении будет равно 1111100000100111.