Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лр1.doc
Скачиваний:
1
Добавлен:
16.04.2019
Размер:
161.79 Кб
Скачать

Лабораторная работа №1

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

Цель работы

Изучить представление числовой информации с помощью систем счисления (с/с) и методику перевода чисел из одной системы счисления в другую. Выработать практические навыки работы с оболочкой компилятора Visual Basic системы Visual Studio. Научиться создавать и отлаживать простейшие программы, реализующие линейные алгоритмы на языке Visual Basic. Изучить процедуру записи и считывания информации в файл.

Программа работы

  1. Ознакомиться с описанием лабораторной работы.

  2. В соответствии с вариантом задания (табл. 1) выполнить перевод из данной с/с в остальные (2 с/с, 8 с/с, 10 с/с и 16 с/с).

  3. Создать программу в среде Visual Studio на языке C++ калькулятора, основанного на линейном алгоритме и производящего перевод чисел из одной системы счисления в другую.

  4. Создать событийную процедуру записи результата преобразования в файл.

Основные сведения

Представление числовой информации с помощью систем счисления

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

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

Каждая позиционная система имеет определенный алфавит цифр и основание. Основание системы равно количеству цифр (знаков в ее алфавите) и определяет, во сколько раз различается значения одинаковых цифр, стоящих в соседних позициях числа.

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

В общем случае в десятичной системе счисления запись числа А10, которое содержит n целых разрядов числа и m дробных разрядов числа, выглядит следующим образом:

A10=an-1∙10n-1+…+a0∙100+a-1∙10-1+…+a-m∙10-m

В общем случае в двоичной системе счисления запись числа А2, которое содержит n целых разрядов числа и m дробных разрядов числа:

A2=an-1∙2n-1+ an-2∙2n-2+…+a0∙20+a-1∙2-1+…+a-m∙2-m

В системах счисления с основанием q числа в развернутой форме записываются в виде суммы степеней основания q с коэффициентами, в качестве которых выступают цифры 0, 1, q-1:

Aq=an-1qn-1+ an-2qn-2+…+a0q0+a-1q-1+…+a-mq-m

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

Перевод чисел в 10 с/с

Для перевода числа из q-ичной системы в десятичную необходимо записать его в развернутой форме и произвести вычисления.

Из 2 с/с в 10 с/с: 10,112=1∙21+0∙20+1∙2-1+1∙2-2=1∙2+0∙1+1∙1/2+1∙1/4=2,7510.

Из 8 с/с в 10 с/с: 67,58=6∙81+7∙80+5∙8-1=6∙8+7∙1+5∙1/8=55,62510.

Из 16 с/с в 10 с/с: 19F16=1∙162+9∙161+F∙80=1∙256+9∙16+15∙1=41510.

Перевод чисел из 10 с/с в 2 с/с, 8 с/с и 16 с/с

Алгоритм перевода целых десятичных чисел в 2 с/с, 8 с/с и 16 с/с:

  1. Последовательно выполнять деление исходного целого десятичного числа и получаемых целых частных на основание системы (на 2, 8 или 16 для 2 с/с, 8 с/с или 16 с/с соответственно) до тех пор, пока не получится частное, меньшее делителя (т.е. меньшее 2, 8 или 16 для 2 с/с, 8 с/с или 16 с/с соответственно).

  2. Записать полученные остатки в обратной последовательности.

Рассмотрим алгоритм перевода целых чисел на примере перевода целого десятичного числа А10=42410 в 16 с/с, т.е. из с/с с основанием р=10 в с/с с основанием q=16.

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

В результате получаем шестнадцатеричное число: A16=1A816.

Алгоритм перевода правильных десятичных дробей в 2 с/с, 8 с/с и 16 с/с:

  1. Последовательно выполнять умножение исходной десятичной дроби и получаемых дробных частей произведений на основание системы (на 2, 8 или 16 для 2 с/с, 8 с/с или 16 с/с соответственно) до тех пор, пока не получится нулевая дробная часть или не будет достигнута требуемая точность вычислений.

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

Рассмотрим перевод дробных чисел на примере перевода десятичной дроби А10=0,40625 в 8 с/с, то есть из с/с с основанием р=10 в с/с с основанием q=8.

В результате получаем восьмеричную дробь: А8=0,328.

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

Перевод чисел из с/с с основанием p в с/с с основанием q

Чтобы перевести произвольное число из с/с с основанием р = 2m в с/с с основанием = 2n, необходимо:

  1. В р-ичном числе объединить разряды влево и вправо от запятой в группы по m разрядов в каждую.

  2. Если крайние группы окажутся неполными, то необходимо дополнить их нулями до полных групп.

  3. Рассмотреть каждую группу как n-разрядное q-ичное число и заменить его на соответствующую цифру системы счисления с основанием q.

Пример.

0001 1011 1111 0000 , 0110 10002 = 1BF0

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]