Размер памяти выделенной для хранения массива вещественных чисел определяет
Система вещественных чисел в математических вычислениях предполагается непрерывной и бесконечной, т.е. не имеющей ограничений на диапазон и точность представления чисел. Однако в компьютерах числа хранятся в регистрах и ячейках памяти с ограниченным количеством разрядов. В следствие этого система вещественных чисел, представимых в машине, является дискретной (прерывной) и конечной.
При написании вещественных чисел в программах вместо привычной запятой принято ставить точку. Для отображения вещественных чисел, которые могут быть как очень маленькими, так и очень большими, используется форма записи чисел с порядком основания системы счисления. Например, десятичное число 1.25 в этой форме можно представить так:
1.25*10 0 = 0.125*10 1 = 0.0125*10 2 = .
12.5*10 -1 = 125.0*10 -2 = 1250.0*10 -3 = . .
Любое число N в системе счисления с основанием q можно записать в виде N = M*q p , где M — множитель, содержащий все цифры числа (мантисса), а p — целое число, называемое порядком. Такой способ записи чисел называется представлением числа с плавающей точкой.
Если "плавающая" точка расположена в мантиссе перед первой значащей цифрой, то при фиксированном количестве разрядов, отведённых под мантиссу, обеспечивается запись максимального количества значащих цифр числа, то есть максимальная точность представления числа в машине. Из этого следует:
Мантисса должна быть правильной дробью, у которой первая цифра после точки (запятой в обычной записи) отлична от нуля: 0.12
Мантиссу и порядок q-ичного числа принято записывать в системе с основанием q, а само основание — в десятичной системе. Примеры нормализованного представления:
753.15 = 0.75315*10 3 ;
— 0.000034 = — 0.34*10 -4 ;
—101.01 = —0.10101*2 11 (порядок 112 = 310)
0.000011 = 0.11*2 -100 (порядок —1002 = —410).
Вещественные числа в компьютерах различных типов записываются по-разному, тем не менее, все компьютеры поддерживают несколько международных стандартных форматов, различающихся по точности, но имеющих одинаковую структуру следующего вида:
Здесь порядок n-разрядного нормализованного числа задается в так называемой смещенной форме: если для задания порядка выделено k разрядов, то к истинному значению порядка, представленного в дополнительном коде, прибавляют смещение, равное (2 k-1 — 1). Например, порядок, принимающий значения в диапазоне от —128 до +127, представляется смещенным порядком, значения которого меняются от 0 до 255.
Использование смещенной формы позволяет производить операции над порядками, как над беззнаковыми числами, что упрощает операции сравнения, сложения и вычитания порядков, а также упрощает операцию сравнения самих нормализованных чисел.
Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате.
Стандартные форматы представления вещественных чисел:
2) двойной — 64-разрядное нормализованное число со знаком, 11-разрядным смещенным порядком и 53-разрядной мантиссой (старший бит мантиссы не хранится, размер поля, выделенного для хранения мантиссы, составляет 52 разряда).
3) расширенный — 80-разрядное число со знаком, 15-разрядным смещенным порядком и 64-разрядной мантиссой. Позволяет хранить ненормализованные числа.
Следует отметить, что вещественный формат с m-разрядной мантиссой позволяет абсолютно точно представлять m-разрядные целые числа, т. е. любое двоичное целое число, содержащее не более m разрядов, может быть без искажений преобразовано в вещественный формат.
Вопрос 20
Что включает в себя описание массива?
+1)указание имени переменной
+2)указание максимально возможного числа элементов в массиве
+3)указание типа элементов массива
4)указание набора операций с массивом
Вопрос 21
Чем определяется эффективность использования массивов для решения различных задач?
+1)возможностью непосредственного обращения к любому элементу массива
2)высокой скоростью доступа к элементам массива
3)возможностью гибкого управления используемой памятью
4)возможностью хранения разнородной информации
Вопрос 22
Какие типы данных можно использовать в качестве элементов массива?
+1)целые
+2)вещественные
+3)символьные
+4)логические
Вопрос 23
Чем определяется размер памяти, выделяемой для хранения элементов массива?
+1)заявленным при описании массива числом элементов
+2)заявленным при описании массива типом элементов массива
3)заявленным при описании массива именем переменной
4)явным указанием необходимого объема памяти при описании массива
Вопрос 24
Какие описания элементов двухмерного массива являются правильными?
+1)mas2 [10, 20]
+2)mas2 [k+1, j-1]
3)mas2 [i; j]
4)mas2 [i, j, 3]
Вопрос 25
Какие описания множеств являются правильными?
+1)MySet : Set of 0 .. 20;
+2)MySet : Set of 'a' .. 'z';
3)MySet : Set of real;
4)MySet : Set [1 .. 10];
Вопрос 26
Какие операции можно выполнять с переменными-множествами?
+1)разность
+2)проверка включения двух множеств
+3)проверка принадлежности элемента множеству
+4)пересечение
+5)объединение
Вопрос 27
Как можно получить текущую длину текстовой строки?
+1)с помощью стандартной функции Length
+2)с помощью нулевого байта
3)с помощью стандартной подпрограммы StringLen
4)прямым подсчетом всех символов в строке
Вопрос 28
Какие служебные слова используются при описании структуры запись?
+1)record - end
2)begin - end
3)type - end
Вопрос 29
Для чего при работе с записями используется служебное слово With?
1)для устранения необходимости указывать имя записи с каждым полем
2)для выполнения одной и той же операции сразу со всеми полями записи
3)для установки начальных значений в поля записи
4)для организации циклической обработки полей записи
Вопрос 30
Какие инструкции присваивания с полями записи Stud являются правильными?
+1)Stud.Name := 'Alexander';
+2)Stud.Oplata := summa/12;
3)Stud Sex := true;
4)Name.Stud := 'Marina';
Вопрос 31
Если f - файловая переменная, то как выполняется связь ее с дисковым файлом?
1)Assign (f, 'MyFile.001');
+2)Assign (f, FileName);
3)Assign ('MyFile.txt', f);
4)Reset (f, FileName);
Вопрос 32
Сколько файловых переменных следует объявлять в программе?
+1)столько, сколько файлов ОДНОВРЕМЕННО предполагается использовать в программе
2)столько, сколько ВСЕГО файлов предполагается использовать в программе
3)ВСЕГДА достаточно только одной
4)любое количество
Вопрос 33
Что происходит с существующим файлом при его открытии для записи?
+1)старое содержимое файла уничтожается без предупреждения
2)выводится предупреждение о возможном уничтожении содержимого файла
3)генерируется ошибка времени выполнения
4)ничего не происходит
Вопрос 34
Что необходимо выполнить для формирования типизированного файла с элементами-записями?
1)объявить переменную-запись соответствующего типа
2)сформировать все поля очередной записи
3)скопировать сразу всю запись в файл
4)скопировать в файл отдельные поля записи
Вопрос 35
Что необходимо выполнить для построчного чтения текстового файла с числовыми данными?
1)организовать внешний цикл для чтения строк по условию достижения конца файла EOF
2)организовать внутренний цикл для чтения из файла очередного набора чисел по условию достижения конца строки EOLN
3)перейти к чтению чисел из следующей строки с помощью ReadLn без параметров
4)организовать чтение сразу всей очередной строки в соответствующую переменную
Целые числа являются самыми простыми числовыми данными, с которыми работает компьютер. Целые числа хранятся в двух возможных видах: беззнаковом (для положительных целых чисел) и со знаком (для отрицательных чисел). Целые числа в компьютере хранятся в формате с фиксированной запятой.
Алгоритм представления вещественного числа:
Перевести число в двоичную систему счисления.
Привести число к нормализованной записи.
Найти смещённый порядок числа.
Поместить знак, порядок и мантиссу в соответствующие разряды.
Представим число $-25.625$ в $4$-байтовом представлении ($1$ бит отводится под знак числа, $8$ бит -- под смещённый порядок, остальные биты -- под мантиссу).
При записи дробных чисел обращают внимание на точность их представления, т.е. на количество значащихся цифр.
Существуют два типа представления вещественных чисел:
1. С плавающей запятой, точкой – нормальная запись:
Основан на нормальной (экспоненциальной) записи чисел. Число представляется в виде:
x = ± m∙n p , где m – мантисса, р – порядок, n – основание.
Представление числа в формате с плавающей точкой различно.
Пример: 12.3456 = 0,123456*10 2 = 1234,56*10 -2 .
Положение точки в мантиссе определяется величиной порядка p с изменением порядка в большую или меньшую сторону точка перемещается вправо или влево, т.е. “плавает” в изображении числа.
Нормализация при вводе числа и в процессе вычислений осуществляется автоматически. При этом мантисса сдвигается влево на необходимое число разрядов. Происходит соответственно увеличение порядка. При сложении нормального числа одного порядка, может возникнуть переполнение разрядной сетки (появляется 1 слева от запятой). Такого рода переполнение исключается сдвигом мантиссы вправо на 1 разряд и увеличение порядка на 1 единицу. Такая коррекция называется нормализация вправо.
Пример. 4 байтовая ячейка памяти – 24 разряда под мантиссу.
+/- | порядок | Мантисса |
1 бит | 7 бит | 2,3,4 байты |
1-й байт |
В 1-м байте содержится машинный порядок, в старшем бите хранится знак числа. На порядок отводится 7 бит (2 7 = 128). 128 значений может принимать диапазон значений порядка. Порядок может быть положительным или отрицательным (-64…+63).
В машинном представлении порядок смещен относительно математического и имеет только положительные значения. Смещение формируется так, чтобы минимальному математическому значению порядка соответствовал нуль (0).Связь между машинным и математическим порядком: Мp=p+6410.
Для записи внутреннего представления вещественного числа надо:
1. Перевести модуль данного числа в двоичную систему счисления с 24-мя значащими цифрами.
2. Нормализовать двоичное число.
3. Найти машинный порядок.
4. Учитывая знак числа записать его представление в 4-х байтовом машинном слове.
Пример: 250.187510 – записать внутреннее представление в 4-х байтовой ячейке.
1. Перевод в двоичную систему с 24 значащими цифрами 250,187510=11111010,0011000000000000002 (количество цифр до запятой = 810 = 10002).
Запишем в форме нормализованного двоичного числа с плавающей точкой 0,1111 1010 0011 0000 0000 0000*10 1000 2.
Здесь мантисса, основание системы счисления (210=102) и порядок (810=10002) записаны в двоичной системе.
Вычислим машинный порядок: М=10002+100 00002= 100 10002
Запишем в 4-х байтовой ячейки с учетом знака:
0000 0000 | |||
1-й байт | 2-й байт | 3-й байт | 4-й байт |
2 . С фиксированной запятой, точкой – естественная запись:
Все разряды ячейки кроме знакового служат для изображения разрядов чисел, каждому разряду ячейки соответствует один и тот же разряд числа, что и фиксирует место запятой перед определенным разрядом. Такая система упрощает выполнение арифметических действий, но сильно ограничивает диапазон чисел, которые могут быть представлены в этом типе. Диапазон – 1< x < 1 для представления чисел не укладывающихся в диапазон вводят масштабные коэффициенты. Целые типы данных представляются в ЭВМ в формате с фиксированной запятой.
При работе с вещественными числами надо помнить:
1. При записи чисел возникают ошибки, которые возрастают при операциях.
2. Не разумно сравнивать 2 вещественных числа на точное равенство.
3. В результате вычитания возможна потеря точности.
4. «+» или «–» малого числа может никак не сказаться на результате.
5. Получение очень больших чисел может вызвать переполнение порядка, а очень малые – исчезновение числа.
Диапазон значенийвещественных чисел шире, чем у целых. Наименьшее по абсолютной величине число равно 0, а наибольшее по модулю, это число с самой большой мантиссой и с самыми большим порядком. Множество вещественных чисел в формате с плавающей точкой является ограниченным и дискретным. Количество вещественных чисел, точно представляемых в памяти вычисляется по формуле N = 2 t *(Mpmax = Pmin+1)+1, где
T – количество двоичных разрядов мантиссы
Mpmax – максимальное значение математического порядка.
Pmin – минимальное значение математического порядка.
Пример: для 4-х байтовой ячейки
Mpmax = 63, t = 24, Pmin = -64,
Точность числа – количество значащих цифр, которое удается сохранить в ограниченном числе разрядов.
Беззнаковые целые числа
Для беззнакового представления все разряды ячейки отводятся под представление самого числа. Поэтому, если известно, что число положительное, то выгоднее рассматривать его как беззнаковое.
Положительные целые числа занимают в памяти компьютера $1$ или $2$ байта.
В $1$-байтовом формате целые числа принимают значения от $0$ до $255$.
В $2$-байтовом формате от $0$ до $65535$.
Число $30_=0001 \ 1110_2$ в $1$-байтовом формате:
Число $30_=0001 \ 1110_2$ в 2-байтовом формате:
Целые числа со знаком
Целые числа со знаком (отрицательные) занимают в памяти компьютера $1$, $2$ или $4$ байта, при этом самый старший (знаковый) разряд содержит информацию о знаке числа.
Если число положительное, то в знаковом разряде помещается $«0»$, если число отрицательное -- $«1»$.
Целые числа со знаком в разных форматах принимают соответствующие значения:
в $1$-байтовом формате -- от $-128$ до $127$;
в $2$-байтовом формате -- от $-32768$ до $32767$;
в $4$-байтовом формате -- от $-2147483648$ до $2147483647$.
Алгоритм представления в компьютере беззнаковых целых чисел
Беззнаковое целое положительное число перевести в двоичную систему счисления.
Записать число в $8$ разрядах так, чтобы младший разряд числа соответствовал младшему разряду ячейки.
Дополнить число, если необходимо, слева нулями до нужного числа разрядов ($8$-ми, $16$-ти, $32$-х).
Дополним до $8$-ми разрядов:
Нормализованная запись числа
является нормализованной записью отличного от нуля действительного числа,
где $n$ -- любое целое число (в том числе и ноль),
$m$ -- правильная дробь в системе счисления с основой $q$, у которой первая цифра после запятой не равна нулю, то есть $\frac\le m
$m$ называется мантиссой числа, $n$ -- порядком числа, $q$ -- основанием системы счисления.
Приведем числа десятеричной системы к нормализованной записи:
\[1.3579=0.13579\cdot ^1;\] \[10000=0.1\cdot ^5;\] \[0,123456=0.123456\cdot ^0.\]
Приведем число восьмеричной системы счисления к нормализованной записи:
$_8=_8\cdot 8^$ (порядок записан в десятичной системе).
Приведем число двоичной системы счисления к нормализованной записи:
Готовые работы на аналогичную тему
Для хранения целых чисел со знаком отводится $1$ разряд для знака, а остальные -- для цифр модуля числа.
Например, для хранения числа в $1$-байтовом формате ($8$ бит) $1$ разряд отводится для знака числа, остальные $7$ разрядов -- для модуля числа.
Для хранения целых чисел со знаком применяется $3$ формы кода:
Особенно широко используется обратный и дополнительный код, которые позволяют существенно облегчить элементарные операции: сложение, вычитание, умножение и деление.
Положительные числа в прямом, обратном и дополнительном кодах изображают двоичными кодами с цифрой $0$ в знаковом разряде.
У положительных чисел все коды одинаковы, т.е. прямой, обратный и дополнительный коды равны между собой.
Отрицательные числа в прямом, обратном и дополнительном кодах изображаются по-разному.
Прямой код числа -- это его модуль, переведенный в двоичную систему с измененным старшим битом, в зависимости от знака.
В знаковом разряде помещается цифра $1$, а в разрядах цифровой части числа -- двоичный код модуля числа.
Числа в компьютере хранятся целыми байтами; $1$, $2$, $4$ или $8$. От количества памяти зависит количество разрядов данного числа. В $1$ байте их $8$, в $2$ - $16$ и т.д. Поэтому представляемые числа нужно дополнять нулями до необходимого количества.
Если числа будут занимать в памяти $2$ байта, то знаковым все равно будет самый старший, то есть: $-30_=1001 \ 1110_2= 1000 \ 0000 \ 0001 \ 1110_2$
Обратный код. Для операций с отрицательными числами обычно не используется прямой код, поэтому для облегчения алгоритмов выполнения арифметических операций был создан обратный код.
Для получения обратного кода выполняется инвертирование всех цифр двоичного кода модуля числа: $0$ заменяется на $1$, а $1$ - на $0$. Знак разряда остается без изменений.
Дополнительный код
Для получения дополнительного кода числа к обратному коду добавляется единица к его младшему разряду.
Алгоритм получения дополнительного кода отрицательного числа
Модуль отрицательного числа представить прямым кодом.
Значение всех бит инвертировать: все $0$ заменить на $1$, а $1$ на $0$ (кроме значения знакового разряда).
К младшему разряду полученного обратного кода прибавить единицу.
Получим $8$-разрядный дополнительный код числа $-30$:
$00011110 - \ число \mid -30\mid =30$ в прямом коде
$11100001 - \ число \ -30$ в обратном коде
$11100010 - \ число \ -30$ в дополнительном коде
Целые отрицательные числа при вводе в компьютер преобразуются в обратный или дополнительный двоичный код и в таком виде хранятся и принимают участие в операциях. При выводе их из компьютера происходит обратное преобразование в отрицательные десятичные числа.
В $60$-х и $70$-х гг. не было единопризнанного стандарта представления чисел с плавающей запятой, из-за чего программы того времени не были переносимыми приложениями. Также большой проблемой были «странности» разных компьютеров, которые нужно было знать и учитывать при создании программ.
В $1976$ году была появилась инициатива создать единый стандарт для представления чисел с плавающей запятой, что существенно упростило работу с числами.
Вычисления компьютера ограничены его памятью, поэтому дробная часть вещественных чисел не является бесконечной и хранится в памяти с определенной точностью.
Числа в нормализованном виде чаще всего записываются только на экране компьютера, поэтому принято запятую в них заменять на точку.
Принятый способ хранения вещественных (действительных) чисел в памяти компьютера использует нормализованную (экспоненциальную) запись действительных чисел.
Для хранения вещественных чисел (как и для целых) используется двоичная система. Таким образом, число предварительно должно быть переведено двоичный код.
Хранение чисел с плавающей запятой
Для хранения вещественных чисел в памяти компьютера часть разрядов ячейки отводится для записи порядка числа, остальные -- для записи мантиссы. По одному разряду в каждой группе разрядов отводится для знака порядка и знака мантиссы. Чтобы не хранить знак порядка был придуман смещенный порядок.
Если для задания порядка выделено k разрядов, то к истинному порядку (ИП) прибавляют смещение, таким образом, смещённый порядок (СП) рассчитывается по формуле:
Найдем смещённый порядок для истинного порядка, лежащего в диапазоне от $-127$ до $+128$.
Возьмем начальное значение ИП= $-127$:
Возьмем конечное значение ИП = $128$:
Таким образом, ИП, лежащий в диапазоне от $-127$ до $+128$, представляется смещённым порядком, значения которого меняются в диапазоне от $0$ до $255$.
Готовые работы на аналогичную тему
Ноль в десятичной системе будет записан в нормализованном виде следующим образом:
Нормализованная экспоненциальная запись (НЭЗ) числа - это запись в виде
где $n$ -- любое целое число (в том числе и ноль),
$m$ -- правильная дробь в системе счисления с основой $q$, целая часть которой состоит из одной цифры,
$m$ --мантисса числа, а $n$ -- порядок (или экспонента) числа.
Рассмотрим вышеописанные числа в нормализованной экспоненциальной записи.
НЭЗ десятичных чисел:
\[1.3579=0.13579\cdot ^1=1.3579\cdot ^0;\] \[10000=0.1\cdot ^5=1.0\cdot ^4;\] \[0.123456=0.123456\cdot ^0=1.23456\cdot ^.\]
НЭЗ восьмеричного числа:
НЭЗ двоичного числа:
Обратите внимание, что в НЭЗ записи первая цифра после запятой может быть нулём, в отличие от нормализованной записи.
Читайте также: