- •Понятие информации, виды и способы её представления
- •Задачи получения, передачи, преобразования и хранения информации
- •Язык как способ представления и передачи информации
- •Задачи, требующие автоматизированной обработки информации
- •Системы автоматизированной и автоматической обработки информации
- •Назначение и структура операционных систем
- •Исторические этапы автоматизации обработки информации
- •Последовательность обработки прикладных программ
- •Жизненный цикл программного обеспечения
- •Задачи системного программного обеспечения
- •Назначение и последовательность функционирования компиляторов
- •Требования к языкам программирования и их классификация
- •Понятие алгоритма, его основные свойства и способы записи
- •14. Временная и объёмная сложность алгоритма
- •15. Оценки временной сложности алгоритма
- •16. Структура рекурсивных алгоритмов
- •18. Методы доступа к функциям из библиотек и пакетов
- •22. Операции над данными стандартных типов и их старшинство
- •24. Манипуляторы потокового ввода и вывода
- •25. Ссылочные типы данных и их применение
- •27. Структурный тип данных
- •29. Многомерные массивы
- •30. Строки и массивы символов
- •31. Файлы и потоки
- •32. Методы открытия файлов для обмена информацией
- •33. Прямой доступ к отдельным записям в файлах
- •34. Программная реализация алгоритмов линейной структуры
- •35. Программная реализация разветвляющихся алгоритмов
- •36. Реализация циклических алгоритмов с заранее неизвестным количеством повторений
- •37. Реализация циклических алгоритмов с заранее известным количеством повторений
- •39. Предварительное описание функции
- •40. Локальные и глобальные величины программы
- •41. Способы обмена информацией между вызывающей и вызываемой функциями
- •42. Передача функций в качестве параметров функций
- •44. Динамические переменные. Выделение и освобождение памяти при выполнении программы
- •45. Построение списковых (последовательных) структур
- •46. Последовательные, циклические и рекурсивные алгоритмы
- •47. Базовая структура цифровой машины с хранимой программой
- •48. Архитектура и структура команд четырёхадресной машины
- •49. Архитектура и структура команд трёхадресной машины
- •50. Архитектура и структура команд двухадресной машины
- •51. Архитектура и структура команд одноадресной машины
- •52. Классификация устройств памяти систем обработки информации
- •53. Реализация устройств оперативной и долговременной памяти
- •54. Позиционные системы счисления и выполнение арифметических операций
- •55. Представление целых и действительных чисел в позиционных системах счисления
- •56. Связь между системами счисления с основаниями вида 2k
- •57. Перевод целых и действительных чисел из одной позиционной системы в другую
- •58. Прямой, обратный и дополнительный коды
- •59. Нормализованное представление чисел, переполнение, модифицирванные коды
- •60. Алгоритмы сложения и вычитания в дополнительных и обратных кодах
- •61. Алгоритмы умножения в дополнительных и обратных кодах
- •62. Структуры рекурсивных алгоритмов
- •63. Применение рекурсивных алгоритмов
- •64. Оценка сложности рекурсивных алгоритмов
55. Представление целых и действительных чисел в позиционных системах счисления
Вещественные числа обычно представляются в виде чисел с плавающей запятой. Числа с плавающей запятой — один из возможных способов представления действительных чисел, который является компромиссом между точностью и диапазоном принимаемых значений, его можно считать аналогом экспоненциальной записи чисел, но только в памяти компьютера.
Число с плавающей запятой
состоит из набора отдельных двоичных
разрядов, условно разделенных на так
называемые знак (англ. sign), порядок (англ. exponent)
и мантиссу (англ. mantis).
В наиболее распространённом формате
(стандарт IEEE 754) число с плавающей запятой
представляется в виде набора битов,
часть из которых кодирует собой мантиссу
числа, другая часть — показатель степени,
и ещё один бит используется для указания
знака числа (
—
если число положительное,
—
если число отрицательное). При этом
порядок записывается как целое число
в коде
со сдвигом, а
мантисса — в нормализованном
виде (от 1 до 10),
своей дробной частью в двоичной системе
счисления. Знак — один бит, указывающий
знак всего числа с плавающей точкой.
Порядок и мантисса — целые числа, которые
вместе со знаком дают представление
числа с плавающей запятой в следующем
виде:
,
где
—
знак,
—
основание,
—
порядок, а
—
мантисса. Десятичное число, записываемое
как
,
где
—
число в полуинтервале
,
—
степень, в которой стоит множитель
;
в нормализированной форме модуль
будет
являться мантиссой, а
—
порядком, а
будет
равно
тогда
и только тогда, когда
принимает
отрицательное значение. Например, в
числе
=
=
=
=
Порядок также иногда называют экспонентой или просто показателем степени.
При этом лишь некоторые из вещественных чисел могут быть представлены в памяти компьютера точным значением, в то время как остальные числа представляются приближёнными значениями.
56. Связь между системами счисления с основаниями вида 2k
Перевод чисел между системами счисления, основания которых являются степенями числа 2, может производиться более простым алгоритмом. Для записи двоичных чисел используют две цифры, то есть в каждом разряде числа возможны два варианта записи. Для записи восьмеричных чисел используется восемь цифр, то есть возможны восемь вариантов. А для записи шестнадцатеричных чисел используется 16 цифр, то есть 16 возможных вариантов.
Таким образом, для перевода целого двоичного числа в восьмеричное его нужно разбить на группы по три цифры, справа налево, а затем преобразовать каждую группу в восьмеричную цифру. Если в последней, левой, группе окажется меньше трех цифр, то нужно его дополнить нулями слева.
Ну типа как на ЕГЭ.
Например, преобразуем дробное двоичное число А2 = 0,1101012 в восьмеричную систему счисления:
Двоичные триады |
110 |
101 |
Восьмеричные цифры |
6 |
5 |
Получаем: А8 = 0,658.
57. Перевод целых и действительных чисел из одной позиционной системы в другую
Следует понимать, что при переводе числа из одной системы счисления в другую количественное значение числа не изменяется, а меняется только форма записи числа, так же как при переводе названия числа, например, с русского языка на английский.
Перевод чисел из произвольной системы счисления в десятичную выполняется непосредственным вычислением по формуле (1) для целых и формуле (2) для дробных чисел.
A = a n·pn+a n-1·pn-1 +a n-2·pn-2+...+a 1·p1+ a0·p0 (1),
A = an·pn+a n-1·p n-1+a n-2·p n-2+…+a1·p1+a0·p0+a-1·p-1+a -2·p-2+…+am-2·p–(m–2)+am–1·p–(m–1)+amp–m (2),
Следует понимать, что при переводе числа из одной системы счисления в другую количественное значение числа не изменяется, а меняется только форма записи числа, так же как при переводе названия числа, например, с русского языка на английский.
Перевод чисел из произвольной системы счисления в десятичную выполняется непосредственным вычислением по формуле (1) для целых и формуле (2) для дробных чисел.
Перевести число из десятичной системы в систему с основанием p – значит найти коэффициенты в формуле (2). Иногда это легко сделать простым подбором. Например, пусть нужно перевести число 23,5 в восьмеричную систему. Нетрудно заметить, что 23,5 = 16+7+0,5 = 2·8+7+4/8 = 2·81+7·80+4·8–1 =27,48. Понятно, что не всегда ответ столь очевиден. В общем случае применяется способ перевода отдельно целой и дробной частей числа.
Для перевода целых чисел применяется следующий алгоритм (полученный на основании формулы (1)):
1. Найдем частное и остаток от деления числа на p. Остаток будет очередной цифрой ai (j=0,1,2 …) записи числа в новой системе счисления.
2. Если частное равно нулю, то перевод числа закончен, иначе применяем к частному пункт 1.
Замечание 1. Цифры ai в записи числа нумеруются справа налево.
Замечание 2. Если p>10, то необходимо ввести обозначения для цифр с числовыми значениями, большими или равными 10.
Пример:
Перевести число 165 в семеричную систему счисления.
165:7 = 23 (остаток 4) => a0 = 4 |
23:7 = 3 (остаток 2) => a1 = 2 |
3:7 = 0 (остаток 3) => a2 = 3 |
Выпишем результат: a2a1a0, т.е. 3247.
Выполнив проверку по формуле (1), убедимся в правильности перевода:
3247=3·72+2·71+4·70=3·49+2·7+4 = 147+14+4 = 165.
Для перевода дробных частей чисел применяется алгоритм, полученный на основании формулы (2):
1. Умножим дробную часть числа на p.
2. Целая часть результата будет очередной цифрой am (m = –1,–2, –3 …) записи числа в новой системе счисления. Если дробная часть результата равна нулю, то перевод числа закончен, иначе применяем к ней пункт 1.
Замечание 1. Цифры am в записи числа располагаются слева направо в порядке возрастания абсолютного значения m.
Замечание 2. Обычно количество дробных разрядов в новой записи числа ограничивается заранее. Это позволяет выполнить приближенный перевод с заданной точностью. В случае бесконечных дробей такое ограничение обеспечивает конечность алгоритма.
Пример 1:
Перевести число 0,625 в двоичную систему счисления.
0,625·2 = 1,25 (целая часть 1) => a1 =1 |
0,25·2 = 0,5 (целая часть 0) => a2 = 0 |
0,5·2 = 1,00 (целая часть 1) => a3 = 1 |
Итак, 0,62510 = 0,1012
Выполнив проверку по формуле (2), убедимся в правильности перевода:
0,1012=1·2-1+0·2-2+1·2-3=1/2+1/8 = 0,5+0,125 = 0,625.
Ну, короче, как в ЕГЭ.
