Читать книгу Информатика и ИТ. Нейросети. - - Страница 4

Глава 2. Системы счисления. Компьютерная арифметика

Оглавление

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


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

Если в записи числа значение цифры не зависит от ее положения в структуре числа и при записи может использоваться неограниченное множество символов, то система счисления называется непозиционной. Примером такой непозиционной системы является римская система.

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

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

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

Так как из контекста не всегда понятно, к какой системе счисления относится запись, то основание недесятичной системы счисления записывается в виде нижнего индекса числа:

1112 =7 (10) 1118 =73 (10) 11116 =273 (10)

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

Таблица 2.1.

Таблица кодирования


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

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

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

– Проставить номера позиций цифр в числе (начиная от запятой влево и вправо);

– Каждую цифру числа умножить на основание системы счисления в степени соответствующей номеру позиции;

– Перевести значения цифр в десятичные (для 16-ричных чисел, для систем счисления с основаниями 2 и 8 не требуется);

– Вычислить сумму полинома.

Рассмотрим пример использования данного алгоритма для числа FB,0C16


FB,0C16 = F·16+ B·16+0·16—1 +C·8—2=

= 15·16+11·16+0·16—1 +13·8—2=

= 251.468

Итак, FB,0C16 = 251.468


Правила перевода десятичного числа в иную систему счисления

– Целую часть числа последовательно делить нацело на основание системы счисления. «Собрать» остатки от деления, начиная с остатка от последнего.

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

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

– Записать число (целую и дробную часть) и указать систему счисления.

Рассмотрим пример использования данного алгоритма для перевода числа 3338,78 в шестнадцатеричную систему счисления с точностью до четырех знаков после запятой



Из таблицы кодирования: 13= D16; 10=A16; 11=B16; 14=E16 4. D0A, BAE116

После выполнения преобразований 3338,78 в десятичной системе счисления записывается как D0A, BAE116

Итак, 3338,78= D0A, BAE116

Связь двоичной, восьмиричной и шестнадцатиричной систем счисления

Между системами счисления с основаниями 2, 8 и 16 существует связь, позволяющая легко переводить числа из одной системы в другую, используя следующий метод:

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

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

Примеры

Пример №1

Рассмотрим пример перевода двоичного числа 1010011110,110112 в шестнадцатеричную систему счисления.

1010011110,110112

В двоичном числе от запятой вправо и влево выделим группы цифр по четыре – тетрады. При недостатке цифр в тетраде добавим нули (в начале или конце).

10 \ 1001 \ 1110,1101 \ 12

0010 \ 1001 \ 1110,1101 \ 10002

По таблице кодирования определим соответствие записей в двоичной и шестнадцатеричной системам:

00102 = 216

10012 = 916.

11102 = E16.

11012 = D16.

10002 = 816.

Проведем замену тетрад цифрами шеснадцатиричной системы:

0011 \ 1001 \ 1110,1101 \ 10002 = 29E,D816.

Ответ: 1010011110,110112=29E,D816.

Пример №2

Рассмотрим пример перевода восьмеричного числа 5430,678 в двоичную систему счисления.

5430,678

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

58=1012

48=1002

38=0112

08=0002

68=1102

78=1112

Ответ запишем, заменив восьмиричную цифру триадой:

5430,678=101100011000,1101112


Представление чисел в компьютере


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

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

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

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

Любое действительное число можно записать в нормальной форме:


A=±m* P q, где

m – правильная дробь, называемая мантиссой числа

P – основание системы счисления

q – целое число, называемое характеристикой.


Например, запись числа в нормальной форме имеет вид:


12345,67 = 0,1234567́10 5;

– 9875=– 0,9875́10 4


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

12345,67 = 0,1234567́10 5= 1,234567́10 4= 0,01234567́10 7= 1234567́10—2

Десятичный разделитель «плавает» в числе и не является абсолютной позицией.

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

При хранении вещественного числа используются форматы одинарной точности (32-разрядный) и двойной точности (64 – разрядный).

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

Компьютерное представление целых чисел

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

Всего в разрядную сетку регистра-байта с помощью двоичного кода можно записать 256 вариантов значений: 28=256. Иначе говоря, одного байта достаточно, чтобы записать целое положительное число (в двоичной системе счисления) в диапазоне от 0 до 256.

Еще одна возможность использования одного байта – хранение знакового диапазона: в этом случае старший (самый левый) бит разрядной сетки отводится под признак знака (1 – отрицательное число, 0 – положительное число), при этом количество значимых байтов уменьшается до семи, а диапазон числа будет иным, от -27=-128 до 27=128.

Такой диапазон чисел явно недостаточен даже для бытовых расчетов. Для записи числа, принадлежащего большему диапазону, требуется памяти больше, чем один байт. Двухбайтовая ячейка (часто ее называют словом) дает диапазон хранения чисел соответственно 0—65536 либо, для знаковых целых чисел -32768 – 32767.

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

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

Компьютерное представление вещественных чисел

Говоря о хранении вещественных чисел, следует особо рассмотреть вопрос точности их представления. При бытовых исчислениях обычно обходятся точностью до 2-3-го десятичного знака после запятой, практика научных и инженерных измерений использует 5—6 знаков. Однако нельзя исключать возможность использования очень длинной дробной части числа (допустим, числа {х} с высокой точностью) или бесконечной периодической дроби (например, результат деления 1/3).

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

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

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

В целях увеличения количества разрядов мантиссы (а значит количества значащих цифр) вещественные числа хранятся в нормализованном виде. Нормализованное число в старшем разряде мантиссы обязательно имеет цифру отличную от нуля:

0,005432110*103=0,5432110*105 – нормализованное десятичное число

0,01001012*2—2 = 0,1001012*2—1– нормализованное двоичное число

Как и в случае целых чисел, в программных системах могут использоваться несколько типов хранимых данных: Стандарты программного обеспечения требуют наличия 4-байтового и 8-байтового представления чисел, это числа одинарной и двойной точности.

Формат чисел одинарной точности использует старший бит как знаковый флаг, 8 разрядов для хранения порядка и 23 разряда для хранения мантиссы.


В представленной на рис.2.1. разрядной сетке числа -2,21*10—5 старший разряд равен 1 (число отрицательное). Следующие восемь бит хранят характеристику – смещенный порядок, т.е. порядок числа, увеличенный на значение смещения. Значение смещения для четырехбайтового представления равно 127. Смещение порядка применяют для упрощения операций над числами с плавающей точкой. В рассматриваемом примере характеристика равна: 127+ (-5) =12210= 11110102.

С девятого разряда размещается мантисса: 22110= 110111012.

Громоздкая двоичная запись часто заменяется шестнадцатеричным представлением: BD6E10000.

Четырех байтовый формат хранения представляет числа в диапазоне 3,4*10-38-3,4*1038; точность этого формата составляет 7 знаков в десятичном представлении.

В случае если мантисса числа превышает имеющуюся у формата разрядность, младшие разряды округляются и отбрасываются: 123456789,987654321 → 123456800,0.

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

В двойном формате порядок занимает 11 разрядов, а мантисса – 52 разряда.

8 -ми байтовый формат представляет числа в диапазоне ±4,9*10—324 – 4,9*10324; формат двойной точности в десятичном представлении составляет 15 знаков, смещение порядка равно 1024.

Фиксированное представление чисел позволяет хранить точное значение числа, а представление с плавающей точкой – округляется до точности представления и отображается на экране (без форматирования) в экспоненциальном виде: 1.234568Е+08, где конструкция Е+08 указывает на сдвиг запятой на количество знаков вправо (+) или влево (-).

Информатика и ИТ. Нейросети.

Подняться наверх