
- •4 Понятие алгоритма, программы, команды. Способы записи алгоритма. Этапы разработки программ.
- •Этапы разработки программ:
- •5. Язык программирования Java. Байт-код. Виртуальная машина Java.
- •6. Понятие переменной. Имена переменных. Ключевые и зарезервированные слова. Простые типы данных. Оператор присваивания. Порядок выполнения операций.
- •9. Типы данных с плавающей точкой. Константы с плавающей точкой.
- •Методы класса Math:
- •Методы класса Math:
- •16. Операторы перехода и их особенности: break, continue, return.
- •33. Формы представления вещественного числа. Нормализация вещественного числа. Пример.
- •34. Перевод вещественного числа из одной с/с в другую. Преобразование
- •37. Кодирование и обработка в компьютере целых чисел со знаком. Прямой и дополнительный код. Дополнение числа. Дополнительный код двоичного числа.
- •2 Бита расходуется на запись знака числа и порядка.
- •40. Сложение и умножение нормализованных чисел. Примеры.
33. Формы представления вещественного числа. Нормализация вещественного числа. Пример.
Вещественные числа обычно представляются в виде чисел с плавающей запятой. Числа с плавающей запятой — один из возможных способов предсталения действительных чисел, который является компромиссом между точностью и диапазоном принимаемых значений, его можно считать аналогом экспоненциальной записи чисел, но только в памяти компьютера.
Число с плавающей запятой состоит из набора отдельных двоичных разрядов, условно разделенных на так называемые знак, порядок и мантиссу. В наиболее распространённом формате (стандарт IEEE 754) число с плавающей запятой представляется в виде набора битов, часть из которых кодирует собой мантиссу числа, другая часть — показатель степени, и ещё один бит используется для указания знака числа (0 - если число положительное, 1 - если число отрицательное). При этом порядок записывается как целое число в коде со сдвигом, а мантисса - в нормализованном виде, своей дробной частью в двоичной системе счисления.
Знак - один бит, указывающий знак всего числа с плавающей точкой. Порядок и мантисса — целые числа, которые вместе со знаком дают представление числа с плавающей запятой в следующем виде:
(-1)^s \times M \times B^E, где s — знак, B-основание, E — порядок, а M — мантисса.
Порядок также иногда называют экспонентой или просто показателем степени.
При этом лишь некоторые из вещественных чисел могут быть представлены в памяти компьютера точным значением, в то время как остальные числа представляются приближёнными значениями.
Нормальная и нормализованная форма
Нормальной формой числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) в десятичной системе находится на полуинтервале [0; 1). Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать в 4 формах — 0,0001×100, 0,001×10−1, 0,01×10−2, 0,1×10−3), поэтому распространена также другая форма записи — нормализованная, в которой мантисса десятичного числа принимает значения от 1 (включительно) до 10 (не включительно), а мантисса двоичного числа принимает значения от 1 (включительно) до 2 (не включительно). То есть в мантиссе слева от запятой до применения порядка находится ровно один знак. В такой форме любое число (кроме 0) записывается единственным образом. Ноль же представить таким образом невозможно, поэтому стандарт предусматривает специальную последовательность битов для задания числа 0 (а заодно и некоторых других полезных чисел, таких как -\infty и +\infty). Так как старший двоичный разряд (целая часть) мантиссы вещественного числа в нормализованном виде всегда равен «1», то его можно не записывать, сэкономив таким образом один бит, что и используется в стандарте IEEE 754. В позиционных системах счисления с основанием большим, чем 2 (в троичной, четверичной и др.), этого замечательного свойства нет (ведь целая часть там может быть не только единицей).
34. Перевод вещественного числа из одной с/с в другую. Преобразование
(M10,k10) → (M2,k2). Пример.
Преобразование дробных десятичных чисел в двоичные[править | править исходный текст]
Если в исходном числе есть целая часть, то она преобразуется отдельно от дробной. Перевод дробного числа из десятичной системы счисления в двоичную осуществляется по следующему алгоритму:
Дробь умножается на основание двоичной системы счисления (2);
В полученном произведении выделяется целая часть, которая принимается в качестве старшего разряда числа в двоичной системе счисления;
Алгоритм завершается, если дробная часть полученного произведения равна нулю или если достигнута требуемая точность вычислений. В противном случае вычисления продолжаются над дробной частью произведения.
Пример: Требуется перевести дробное десятичное число 206,116 в дробное двоичное число.
Перевод целой части дает 20610=110011102 по ранее описанным алгоритмам. Дробную часть 0,116 умножаем на основание 2, занося целые части произведения в разряды после запятой искомого дробного двоичного числа:
0,116 • 2 = 0,232
0,232 • 2 = 0,464
0,464 • 2 = 0,928
0,928 • 2 = 1,856
0,856 • 2 = 1,712
0,712 • 2 = 1,424
0,424 • 2 = 0,848
0,848 • 2 = 1,696
0,696 • 2 = 1,392
0,392 • 2 = 0,784
и т. д.
Таким образом 0,11610 ≈ 0,00011101102
Получим: 206,11610 ≈ 11001110,00011101102
35. Перевод вещественного числа из одной с/с в другую. Преобразование
(M2,k2) → (M10,k10). Пример.
Перевод дробных чисел методом Горнера[править | править исходный текст]
Цифры берутся из числа справа налево и делятся на основу системы счисления (2).
Например 0,11012
(0 + 1)/2 = 0,5
(0,5 + 0)/2 = 0,25
(0,25 + 1)/2 = 0,625
(0,625 + 1)/2 = 0,8125
Ответ: 0,11012= 0,812510
36. Кодирование и обработка в компьютере целых чисел без знака. Понятие наибольшего целого числа. Понятие регистра переноса. Примеры.
Кодирование и обработка в компьютере целых чисел без знака
Будем исходить из того, что для записи числа в устройствах компьютера выделяется фиксированное количество двоичных разрядов. Память компьютера имеет байтовую структуру, однако, размер одной адресуемой ячейки обычно составляет несколько байт. Например, в компьютерах IBM ячейка памяти объединяет 2 байта (16 двоичных разрядов) - такая комбинация связанных соседних ячеек, обрабатываемая совместно, называется машинным словом. Для представления числа в регистре арифметико-логического устройства процессора, где формируется результат операции, имеется еще один дополнительный одноразрядный регистр, который называется регистром переноса и который можно рассматривать в качестве продолжения (т.е. 17-го бита) регистра результата. Назначение этого бита выяснится чуть позже.
Конечный размер разрядной сетки порождает понятие «наибольшее целое число», которого в обычном (немашинном) представлении чисел просто не существует. Если количество разрядов k и p = 2, то, согласно (4.8), (Z2)max = 2k - 1. В частности, при k = 16 (Z2)max = 216 - 1 = 1111111111111112 = 6553510. Другими словами, целого числа, скажем, 65636 и более в компьютере просто не может существовать и, следовательно, появление в ходе вычислений чисел, превышающих (Z2)max, должно интерпретироваться как ошибка. Минимальным целым числом в беззнаковом представлении, очевидно, является (Z2)min = 0000000000000002 = 010. В языке программирования PASCAL целые числа без знака, для записи которых отводится 2 байта, определены как тип Word. Тип устанавливает способ кодирования числа, количество отводимых для записи ячеек памяти (т.е. разрядность числа), а также перечень допустимых операций при обработке. Выход за границу 65535 возможен только путем увеличения количества разрядов для записи числа, но это порождает новый тип со своим Zmax; например, тип Longint* с максимальным значением 214748364710, числа которого занимают 4 байта.
* Longint является типом целого числа со знаком.