Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора по информатике).doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
701 Кб
Скачать
☆

4. Системы счисления. Перевод чисел в различные системы счисления.

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

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

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

Количество p различных цифр, употребляемых в позиционной системе определяет название системы счисления и называется основанием системы счисления - "p".

В десятичной системе используются десять цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9; эта система имеет основанием число десять.

Любое число N в позиционной системе счисления с основанием p может быть представлено в виде полинома от основания p:

N = anpn+an-1pn-1+ ... +a1p+a0+a-1p-1+a-2p-2+ ...

здесь N - число, aj - коэффициенты (цифры числа), p - основание системы счисления ( p>1).

Принято представлять числа в виде последовательности цифр: N = anan-1 ... a1a0 . a-1a-2 ...В этой последовательности точка отделяет целую часть числа от дробной (коэффициенты при положительных степенях, включая нуль, от коэффициентов при отрицательных степенях). Точка опускается, если нет отрицательных степеней (число целое).

В ЭВМ применяют позиционные системы счисления с недесятичным основанием: двоичную, восьмеричную, шестнадцатеричную. В аппаратной основе ЭВМ лежат двухпозиционные элементы, которые могут находиться только в двух состояниях; одно из них обозначается 0, а другое - 1. Поэтому основной системой счисления применяемой в ЭВМ является двоичная система.

Двоичная система счисления. Используется две цифры: 0 и 1. В двоичной системе любое число может быть представлено в виде:

N = bnbn-1 ... b1b0 . b-1b-2 ... где bj либо 0, либо 1.

Восьмеричная система счисления. Используется восемь цифр: 0, 1, 2, 3, 4, 5, 6, 7.

Употребляется в ЭВМ как вспомогательная для записи информации в сокращенном виде. Для представления одной цифры восьмеричной системы используется три двоичных разряда (триада) (Таблица 1).

Шестнадцатеричная система счисления. Для изображения чисел употребляются 16 цифр. Первые десять цифр этой системы обозначаются цифрами от 0 до 9, а старшие шесть цифр - латинскими буквами: 10-A, 11-B, 12-C, 13-D, 14-E, 15-F. Шестнадцатеричная система используется для записи информации в сокращенном виде. Для представления одной цифры шестнадцатеричной системы счисления используется четыре двоичных разряда (Таблица 1).

Таблица 1. Наиболее важные системы счисления.

Двоичная (Основание 2)

Восьмеричная (Основание 8)

Десятичная (Основание 10)

Шестнадцатиричная (Основание 16)

 

триады

 

тетрады

0 1

0 1 2 3 4 5 6 7

000 001 010 011 100 101 110 111

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9 A B C D E F

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

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

Перевод чисел в десятичную систему осуществляется путем составлениястепенного ряда с основанием той системы, из которой число переводится. Затем подсчитывается значение суммы.

Пример

а) Перевести 10101101.1012 "10" с.с.

Здесь и в дальнейшем при одновременном использовании нескольких различных систем счисления основание системы к которой относится число будем указывать в виде нижнего индекса.

10101101.1012 = 1 27+ 0 26+ 1 25+ 0 24+ 1 23+ 1 22+ 0 21+ 1 20+ 1 2-1+ 0 2-2+ 1 2-3 = 173.62510

б) Перевести 703.048 "10" с.с.

703.048 = 7 82+ 0 81+ 3 80+ 0 8-1+ 4 8-2 = 451.062510

в) Перевести B2E.416 "10" с.с.

B2E.416 =  11 162+ 2 161+ 14 160+ 4 16-1 = 2862.2510

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

Пример.

а) Перевести 18110 "8" с.с.

   

Результат: 18110 = 2658

б) Перевести 62210 "16" с.с.

   

Результат: 62210 = 26E16

Перевод правильных дробей из десятичной системы счисления в недесятичную.

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

Пример.

Перевести 0.312510 "8" с.с.

    

Результат: 0.312510 = 0.248

Замечание. Конечной десятичной дроби в другой системе счисления может соответствовать бесконечная (иногда периодическая) дробь. В этом случае количество знаков в представлении дроби в новой системе берется в зависимости от требуемой точности.

Пример.

Перевести 0.6510 "2" с.с. Точность 6 знаков.

    

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

Пример.

Перевести 23.12510 "2" с.с.

1) Переведем целую часть:

2) Переведем дробную часть:


Таким образом:  2310 = 101112; 0.12510 = 0.0012. Результат:  23.12510 = 10111.0012.Необходимо отметить, что целые числа остаются целыми, а правильные дроби - дробями в любой системе счисления.Для перевода восьмеричного или шестнадцатеричного числа в двоичную форму достаточно заменить каждую цифру этого числа соответствующим трехразрядным двоичным числом (триадой) (Таб. 1) или четырехразрядным двоичным числом (тетрадой) (Таб. 1), при этом отбрасывают ненужные нули в старших и младших разрядах.

Пример.

а) Перевести 305.48 "2" с.с.

б) Перевести 7B2.E16 "2" с.с.

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

Пример.

а) Перевести 1101111001.11012 "8" с.с.

б) Перевести 11111111011.1001112 "16" с.с.

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

Пример. Перевести 175.248 "16" с.с.

Результат: 175.248 = 7D.516.

Двоичная арифметика.

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

Таблица двоичного сложения

Таблица двоичного вычитания

Таблица двоичного умножения

0+0=0 0+1=1 1+0=1 1+1=10

0-0=0 1-0=1 1-1=0 10-1=1

0 0=0 0 1=0 1 0=0 1 1=1

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

Пример. Выполнить сложение двоичных чисел:

а) X=1101, Y=101;

    

Результат 1101+101=10010.

б) X=1101, Y=101, Z=111;

    

Результат 1101+101+111=11001.

При вычитании двоичных чисел в данном разряде при необходимости занимается 1 из старшего разряда. Эта занимаемая 1 равна двум 1 данного разряда.

Пример. Заданы двоичные числа X=10010 и Y=101. Вычислить X-Y.

    

Результат 10010 - 101=1101.

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

Пример. 1001 101=?

    

Результат 1001 101=101101.

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

Пример. 1100.011 : 10.01=?

Результат 1100.011 : 10.01=101.1.

5. Представление чисел с плавающей точкой в стандарте IEЕЕ.Сначала рассмотрим в общих чертах представление чисел с плавающей запятой в десятичной системе счисления, а затем соотнесем это представление с двоичным. Итак, числа с плавающей запятой удобно записывать следующим образом: ± X1 X2 Х3 Х4 Х5 Х6 Х7 х 10Y1Y2 Здесь Xi и Уi — это десятичные цифры. Такого количества значащих цифр (7) и диапазона значений порядка (±99) достаточно для научных расчетов. Мантиссу и порядок из этих диапазонов можно перевести в двоичное представление, умещающееся в 32 разряда, то есть в стандартное компьютерное слово. Мантисса длиной 24 бита может представлять десятичное число из 7 цифр, а 8-битовый порядок подразумеваемого основания 2 позволяет представить достаточно широкий диапазон значений масштабных множителей. Для знака числа необходим один бит. Поскольку ведущий бит нормализованной мантиссы обязательно должен быть равен 1, его можно не включать в представление, за счет чего и освобождается один бит для знака. Таким образом, 32 бита позволяют представить достаточно широкий диапазон чисел с плавающей запятой.Описанный стандарт представления чисел с плавающей запятой в 32-разрядном формате разработан и детально специфицирован Институтом инженеров по электротехнике и электронике (Institute of Electrical and Electronics Engineers, IEEE). В нем определены и представление чисел, и правила выполнения четыре базовых арифметических операций. На рис. 1а продемонстрировано 32-разрядное представление чисел с плавающей запятой. Знак числа задается в первом разряде, за ним следует представление порядка (по основанию 2). Вместо числа со знаком в поле порядка Е хранится целое число без знака Е' = Е + 127. Этот формат называется форматом с избытком 127. Таким образом, Е' входит в диапазон 0 < Е' < 255. Граничные значения указанного диапазона, 0 и 255, употребляются для представления описанных ниже специальных значений. Для обычных (нормальных) значений Е' лежит в пределах 1 < Е' < 254. Это означает, что реальный порядок, Е, находится в диапазоне -126 < Е < 127. Представление порядка в формате с избытком упрощает сравнение относительного размера двух чисел с плавающей запятой. Последние 23 разряда числа представляют мантиссу. Поскольку числа задаются в нормализованном виде, старший бит мантиссы всегда равен 1. Этот битве указывается явно; подразумевается, что он располагается слева от двоичной запятой. Таким образом, 23 бита в поле М соответствуют дробной части мантиссы, то есть разрядам справа от двоичной запятой. Пример числа с плавающей занятой одинарной точности приведен на рисунке 1б.Стандартное 32-разрядное представление (рисунок 1а) называется представлением с одинарной точностью, поскольку занимает одно 32-разрядное слово. Оно позволяет представлять масштабные множители в диапазоне от 2–126 до 2+127, что приблизительно равно 10±38. Значение 24-разрядной мантиссы обеспечивает примерно ту же точность, что и семизначное десятичное значение. Для достижения большей точности и увеличения диапазона чисел с плавающей запятой стандарт IEEE определяет формат двойной точности (рисунок 1в). В нем расширены диапазоны значений мантиссы и порядка. Так, 11-разрядный порядок в формате с избытком 1023 Е' лежит в диапазоне 1 < Е' < 2046 для обычных значений, а значения 0 и 2047 употребляются для представления специальных символов. Следовательно, действительный порядок Е лежит в диапазоне –1022 < Е < 1023, позволяющем представить масштабные множители от 2–1022 до 21023 (то есть приблизительно 10 ±308). Значения 53-разрядной мантиссы обеспечивают практически ту же точность, что и 16 десятичных цифр. Чтобы компьютер соответствовал стандарту IEEE, он должен поддерживал как минимум представление чисел с плавающей запятой одинарной точности. Представление двойной точности необязательно. Этот стандарт определяет еще несколько необязательных расширенных версий обоих форматов. Они предназначены для повышения точности и порядка представления промежуточных результатов последовательных вычислений. Например, внутреннее произведение двух векторов можно вычислить путем накопления суммы произведений с расширенной точностью. Входные значения имеют стандартную точность, одинарную или двойную; результат округляется до той же точности. Благодаря расширенным форматам можно сократить погрешность округления, которая накапливается при многократных однотипных вычислениях. Кроме того, расширенные форматы повышают точность вычисления таких элементарных функций, как синус, косинус и т. п. Наряду с четырьмя базовыми арифметическими операциями стандарт IEEE определяет операции вычисления остатка от деления, квадратного корня, преобразования из двоичного кода в десятичный и наоборот.

S

Е'(8)

M(23)

а) представленное значение = ±1.M x 2Е'–127  (S — знак (1 бит),  Е' — 8-разрядный порядок со знаком в формате с избытком 127,  M — 23-разрядная дробная часть мантиссы).

0

00101000

001010            0

б) представленное значение = ±1.001010 …x 2-87 

S

Е'(11)

M(52)

в) представленное значение = ±1.M x 2Е'–1023  (S — знак (1 бит),  Е' — 11-разрядный порядок со знаком в формате с избытком 1023,  M — 52-разрядная дробная часть мантиссы).Рисунок 1.  Представления чисел с плавающей запятой, определенные в стандарте IEEE: формат числа с одинарной точностью (а); пример числа с одинарной точностью (б); формат числа с двойной точностью (в).Существует два момента, касающихся чисел с плавающей запятой, которые заслуживают особого внимания. Во-первых, если число не нормализовано, его всегда можно привести к нормальной форме, сдвинув дробную часть и соответствующим образом изменив порядок. На рисунке 2  вы видите ненормализованное значение 0,0010110... х 29 и его нормализованное представление 1,0110... х 26 Поскольку масштабный множитель представлен в формате 2i сдвиг мантиссы на один разряд вправо или влево компенсируется увеличением или уменьшением порядка на единицу. Во-вторых, в ходе вычислений может быть сгенерировано число, выходящее за рамки диапазона нормальных чисел. Если точность одинарная, это означает, что для представления нормализованного числа требуется порядок менее –126 или более +127. В первом случае говорят о потере значимости или отрицательном переполнении (underflow), а во втором — о переполнении (overflow). И потеря значимости, и переполнение являются арифметическим исключениями.

0

10001000

0010110…

а) (слева от двоичной запятой нет явно заданной 1), представленное значение = +0,0010110... x 29

0

10000101

0110…                             0 

б) представленное значение = +1.0110 …x 26 

 

Рисунок 2.  Число с плавающей запятой в формате IEEE одинарной точности: ненормализованное (а); нормализованное (б).Специальные значения Граничные значения 0 и 255 порядка Е' в формате с избытком 127 используются для представления специальных значений. Если Е' = 0 и дробная часть мантиссы М равна нулю, значит, представлено точное значение 0. Порядок Е' = 255 и мантисса М = 0 представляют значение да, где да — результат деления нормального числа на нуль. Для представления этих значений обычно применяется и знаковый разряд, например: ±0 и ± ∞. Значения Е' = 0 и М ≠ 0 соответствуют представлению анормальных чисел. Это числа ±0,М х 2–126, которые меньше самого маленького числа. У них отсутствует подразумеваемая единица слева от двоичной запятой, а М представляет собой любую ненулевую 23-разрядную дробную часть числа. Анормальные числа предназначены для случаев, когда возможна постепенная потеря значимости; они расширяют диапазон представляемых чисел и могут быть полезны при работе с очень маленькими числами. Когда Е' = 255 и М ≠ 0, представленное значение называется Not a Number (NaN). Значение NaN является результатом выполнения недопустимой операции,такой как 0/0 или √–1. Исключения Согласно стандарту IEEE, если в ходе работы произойдет потеря значимости, переполнение или деление на нуль, встретится условие inexact либо invalid, процессор должен установить флаг исключения. О первых трех условиях исключений мы уже упоминали. Inexact — это ситуация, когда для представления результата в одном из нормальных форматов его необходимо округлить. Термин invalid употребляется для описания ситуации, когда предпринимается попытка выполнения недопустимой операции, такой как 0/0 или √–1. При возникновении одной из указанных исключительных ситуаций результату присваивается специальное значение. Если установлен флаг разрешения соответствующего прерывания, в исключительной ситуации происходит переход к системной или пользовательской программе обработки этого прерывания. В качестве альтернативы прикладная программа может сама проверять, нет ли исключений, и производить те или иные операции в соответствии с результатами проверки. Если cn = 0, полученный результат будет верным. Но если cn = 1, то для определения точного результата к полученному значению нужно добавить 1. Необходимость в этом поправочном цикле, зависящая от значения переноса, делает операции сложения и вычитания в системе дополнения до единицы более сложными, чем в системе дополнения до двух.