Форматы чисел в памяти пк
Формат данных | Число байт | Число значащих десятичных цифр | Диапазон значений |
короткое вещественное DD | 6–7 | ±1.2×10-38÷3.4×1038 | |
длинное вещественное DQ | 15–16 | ±2.3×10-308÷1.8×10308 | |
расширенное вещественное DT | 19–20 | ±3.4×10-4932÷1.2×104932 | |
целое слово IW | 4–5 | (-32768) ÷(+32767) | |
короткое целое ID | - 231 ÷ 231-1 | ||
длинное целое IQ | - 263 ÷ 263-1 |
S | характеристика | мантисса | DD | S | характеристика | мантисса | DQ |
31 30 23 22 0 63 62 52 51 0
S | характеристика | мантисса | DT |
79 78 64 63 0
S | IW | S | ID |
15 14 0 31 30 0
S | IQ |
63 62 0
Вещественные числа в каждом из трех форматов имеют три поля: поле знака мантиссы S, поле порядка и поле мантиссы. Мантисса числа записывается в нормализованном виде:
1.m1m2 … mi.
Целая часть, всегда равная 1, прямо не представляется в форматах DD и DQ, а учитывается неявно. В формате DT старший бит мантиссы представляется явно.
Порядок вещественных чисел Е записывается в поле порядка в смещенном виде. Он равен истинному порядку, увеличенному на значение смещения:
Е = истинный порядок+ смещение.
Смещенный порядок называется также характеристикой; ее можно считать целым положительным или беззнаковым числом. Задание порядка в форме со смещением упрощает операцию сравнения чисел с плавающей точкой, превращая ее в операцию сравнения целых чисел.
Значение смещения для соответствующих форматов равно 127, 1023 и 16383:
(-1)S×(1. m1m2 … m23)×2E-127 для DD;
(-1)S×(1. m1m2 … m52)×2E-1023 для DQ;
(-1)S×(1. m1m2 … m64)×2E-16383 для DT.
Все числа хранятся в памяти так, что младшая цифра находится по меньшему (начальному) адресу. Численные команды обращаются к операндам и сохраняют результаты, используя только этот начальный адрес.
Представление целых чисел в пк
Чтобы получить внутреннее представление целого положительного числа N, нужно:
1) перевести число N в двоичную систему счисления,
2) полученный результат дополнить слева незначащими нулями до полного заполнения формата целого числа.
Пример. Получить внутреннее представление 9710.
97|16 9710=6116=0110 00012
96 6
000 0000 0110 0001 |
15 14 0
Используя шестнадцатеричную систему, этот код можно написать в 4 раза короче:
0061.
Для записи внутреннего представления целого отрицательного числа -N, нужно:
1) получить внутреннее представление целого положительного числа N;
2) получить обратный код этого числа заменой 0 на 1 и 1 на 0 (инвертирование);
3) к полученному числу прибавить 1 – получается дополнительный код.
При сложении числа в дополнительном коде с его положительным значением знаковые разряды складываются как единое целое вместе с числом. Перенос единицы из знакового разряда выходит за пределы ячейки памяти и теряется. Следовательно: N + (-N) = 0, как и должно быть.
Примеры:
1.Получить внутреннее представление -710.
1)Перевод: 710=1112;
2)
000 0000 0000 0111 |
15 14 0
3)
111 1111 1111 1000 |
15 14 0
4)
111 1111 1111 1001 |
15 14 0
В шестнадцатеричной форме: FFF9.
2. Сложим два числа +710 и –710.
0000 0000 0000 0111 | +7 -7 | |
1111 1111 1111 1001 | ||
0000 0000 0000 0000 |
Представление вещественных чисел в пк
1) Перевести A10 → A2.
2) Нормализовать число.
3) Выполнить смещение порядка.
4) Перевести смещенный порядок Е10 → Е2.
5) Записать число в подходящем формате.
Пример. Число 98.4 записать во внутреннем представлении.
1) 98 |16 9810 = 6216 =0110 00102 ; ×|2 98.410 = 0110 0010.001100112 ;
2 6 0|4
0|8
1|6
1|2
0|4
2) 1.1000 1001 1001… ×26 ;
3) Е10 = 127+6=133;
4) 133 |16 13310=8516 =1000 01012 ;
128 8
5) Подходящий формат DD.
100 0010 1 | 100 0100 1100 1000 0000 0000 | => 42C4C800 |
31 30 23 22 0
Упражнения
1.Текст занимает полных 5 страниц. На каждой странице размещается 30 строк по 70 символов в строке. Какой объем оперативной памяти (в байтах) займет этот текст?
2. Пользуясь таблицей кодировки символов ASCII, расшифровать текст, представленный в виде шестнадцатеричных кодов символов:
1) 57 69 6E 64 6F 77 73 2D 39 35;
2) 63 6F 6D 65 2D 4F 4E 2D 6C 69 6E 65.
3. Пользуясь таблицей кодировки символов ASCII, закодировать с помощью двоичных кодов следующие слова: 1) EXCEL; 2) Word.
4. Записать в двоичной и шестнадцатеричной форме внутреннее представление наибольшего положительного целого и наибольшего по абсолютной величине отрицательного целого числа в формате IW? Какие это числа в десятичной системе счисления?
5. Представить в двоичной и шестнадцатеричной форме в формате IW внутреннее представление целых десятичных чисел:
256, -511, 31000, -31000.
6. Получить шестнадцатеричную форму внутреннего представления в формате DD и в формате DQ вещественных чисел:
1,5; 1024.0; –123,125.
Глава 2. Основы алгоритмизации
Алгоритмы и величины
Этапы решения задачи на ЭВМ. Работа по решению любой задачи с использованием компьютера делится на следующие этапы:
1.Постановка задачи.
2.Формализация задачи.
3.Построение алгоритма.
4.Составление программы на языке программирования.
5.Отладка и тестирование программы.
6.Проведение расчетов и анализ полученных результатов.
Часто эту последовательность называют технологической цепочкой решения задачи на ЭВМ. Непосредственно к программированию в этом списке относятся п. 3, 4, 5.
На этапе постановки задачи должно быть четко определено, что дано и что требуется найти. Здесь очень важно определить полный набор исходных данных, необходимый для получения решения задачи.
Второй этап – формализация задачи. Здесь чаще всего задача переводится на язык математических формул, уравнений, отношений. Если решение задачи требует математического описания какого-то реального объекта, явления или процесса, то формализация равносильна получению соответствующей математической модели.
Третий этап – построение алгоритма. Опытные программисты часто сразу пишут программы на языках, не прибегая к каким-либо специальным способам описания алгоритмов (блок-схемам, псевдокодам). Однако в учебных целях полезно использовать эти средства, а затем переводить полученный алгоритм на язык программирования.
Первые три этапа – это работа без компьютера. Дальше следует собственно программирование на определенном языке в определенной системе программирования. Последний (шестой) этап – это уже использование разработанной программы в практических целях.
Таким образом, программист должен обладать следующими знаниями и навыками:
– уметь строить алгоритмы;
– знать языки программирования;
– уметь работать в соответствующей системе программирования.
Основой программистской грамотности является развитое алгоритмическое мышление.
Понятие алгоритма.Одним из фундаментальных понятий в информатике является понятие алгоритма. Сам термин «алгоритм» взят из математики. Это слово происходит от “Algorithmi” – латинского написания имени Мухамеда аль-Хорезми (787 – 850), выдающегося математика средневекового Востока. В XII в. был переведен на латинский его математический трактат, из которого европейцы узнали о десятичной позиционной системе счисления и правилах арифметики многозначных чисел. Именно эти правила в то время называли алгоритмами. Сложение, вычитание, умножение «столбиком», деление «уголком» многозначных чисел – вот первые алгоритмы в математике. Правила алгебраических преобразований, вычисление корней уравнений также можно отнести к математическим алгоритмам.
В наше время понятие алгоритма трактуется шире. Алгоритм – это последовательность команд управления каким-либо исполнителем. В школьном курсе информатики с понятием алгоритма, с методами построения алгоритмов ученики знакомятся на примерах учебных исполнителей: Робота, Черепахи, Чертежника и др. Эти исполнители ничего не вычисляют. Они создают рисунки на экране, перемещаются в лабиринтах, перетаскивают предметы с места на место. Таких исполнителей принято называть исполнителями, работающими в обстановке.
В разделе информатики под названием «Программирование» изучаются методы программного управления работой ЭВМ. Следовательно, в качестве исполнителя выступает компьютер. Компьютер работает с величинами – различными информационными объектами: числами, символами, кодами и пр. Поэтому алгоритмы, предназначенные для управления компьютером, принято называть алгоритмами работы с величинами.
Данные и величины
Совокупность величин, с которыми работает компьютер, принято называть данными. По отношению к программе данные делятся на исходные, результаты (окончательные данные) и промежуточные, которые получаются в процессе вычислений.
Уровни данных относительно программы
Например, при решении квадратного уравнения ax2 + bx + c = 0 исходными данными являются коэффициенты a, b, c; результатами – корни уравнения: x1, x2; промежуточными данными – дискриминант уравнения: D=b2–4ac.
Для успешного освоения программирования необходимо усвоить следующее правило: всякая величина занимает свое определенное место в памяти ЭВМ. Иногда говорят – ячейку памяти. Хотя термин «ячейка», если учесть архитектуру современных ЭВМ, несколько устарел, однако в учебных целях его удобно использовать.
У всякой величины имеются три основных свойства: имя, значение и тип. На уровне команд процессора величина идентифицируется адресом ячейки памяти, в которой она хранится. В алгоритмах и языках программирования величины делятся на константы и переменные. Константа – неизменная величина и в алгоритме она представляется собственным значением, например: 15, 34.7, ‘k’, true и пр. Переменные величины могут изменять свои значения в ходе выполнения программы и представляются символическими именами – идентификаторами, например: X, S2, cod15 и пр. Любая константа и переменная занимают ячейку памяти, а значение этих величин определяется двоичным кодом в этой ячейке.
Теперь о типах величин – типах данных. С понятием типа данных вы уже встречались, изучая в курсе информатики базы данных и электронные таблицы. Это понятие является фундаментальным для программирования.
В каждом языке программирования существует своя концепция типов данных, своя система типов. Однако в любой язык входит минимально необходимый набор основных типов данных, к которому относятся: целый, вещественный, логический и символьный типы. С типом величины связаны три ее свойства: множество допустимых значений, множество допустимых операций, форма внутреннего представления. Типы констант определяются по контексту (т.е. по форме записи в тексте), а типы переменных устанавливаются в описаниях переменных.
Есть еще один вариант классификации данных: классификация по структуре. Данные делятся на простые и структурированные. Для простых величин (их еще называют скалярными) справедливо утверждение: одна величина – одно значение, для структурированных: одна величина – множество значений. К структурированным величинам относятся массивы, строки, множества и др.
ЭВМ – исполнитель алгоритмов. Как известно, всякий алгоритм (программа) составляется для конкретного исполнителя, в рамках его системы команд. О каком же исполнителе идет речь в теме «программирование для ЭВМ»? Ответ очевиден: исполнителем является компьютер. Точнее говоря, исполнителем является комплекс «ЭВМ + Система программирования (СП)». Программист составляет программу на том языке, на который ориентирована СП. Иногда в литературе по программированию такой комплекс называют «виртуальной ЭВМ». Например, компьютер с работающей системой программирования на Бэйсике называют «Бэйсик-машина»; компьютер с работающей системой программирования на Фортране называют «Фортран-машина» и т.п. Входным языком такого исполнителя является язык программирования ФОРТРАН.
Независимо от того, на каком языке программирования будет написана программа, алгоритм решения любой задачи на ЭВМ может быть составлен из команд:
– присваивания,
– ввода,
– вывода,
– обращения к вспомогательному алгоритму,
– цикла,
– ветвления.
Для описания алгоритмов в дальнейшем мы будем использовать блок-схемы и учебный алгоритмический язык, применяемый в школьном курсе информатики.