Автор работы: Пользователь скрыл имя, 27 Ноября 2012 в 13:53, реферат
Задание 1. Выполнить арифметические действия, рассматривая операнды как ЧФЗ справа от МЗР в формате 1-го байта. Определить модуль результата. Формат результата – 2 байта.
Выполним операцию сложения Z = X+Y = 15(10) + 33(10) = 48(10).
X = 15(10) = 0000 1111(2);
Y = 33(10) = 0010 0001(2).
Формирование второго и третьего частичных произведений – более длительная операция, поскольку вторая и третья анализируемые тетрады содержат 3(10), поэтому каждая операция суммирования требует проверки необходимости коррекции. Вычислим P2 ( P2 = Р3 ), последовательно суммируя слагаемые, образующие P2:
Х 0001 0101 0011 первое слагаемое Р2
Х 0001 0101 0011 второе слагаемое Р2
Р2’ 0010 1010 0110 коррекция
0000 0110 0000
Р2 0011 0000 0110
Х 0001 0101 0011 третье слагаемое Р2
0100 0101 1001 полное Р2,коррекции не требует
Таким образом, второе (а также и третье) частичное произведение, состоящее из трех слагаемых, имеет вид
P2 = Р3 = 0100 0101 1001(2-10).
Теперь можно вычислить сумму первого, второго и третьего частичного произведений, т.е. результат.
Р1 0000 0000 0001 0101 0011 первое сдвинутое частичное произведение
Р2 0000 0100 0101 1001 второе сдвинутое частичное произведение
0000 0100 0110 1110 0011 сумма Р1 и Р2, 4 тетрада требует корректировки
0000 0000 0000 0110 000 коррекция
0000 1000 1100 1101 0011 сумма Р1+ Р2
Р3 0100 0101 1001 третье частичное произведение
0100 1010 0000 0100 0011 сумма Р1+ Р2 +Р3, корректировка требуется
0000 0000 0110 0000 0000 коррекция
0100 1010 0110 0100 0011 требует коррекции 2 тетрада
0000 0110 0000 0000 0000 коррекция
0101 0000 0110 0100 0011 скорректированная сумма Р1+ Р2 +Р3,
Результат Z=0101 0000 0110 0100 0011(2-10)=50643
Часть № 2 Варианты задач на программирование
Вариант № 1
Составить программу преобразования целых и вещественных двоичных чисел в десятичные и обратно. Программа должна иметь диалоговый интерфейс.
Алгоритм разработки программы
Данная программа был разработан в среде MicrosoftVisualStudio 2010 на языке программирования C#. Согласно заданию необходимо разработать программу для пользователей, с помощью которой можно реализовывать преобразования целых и вещественных двоичных чисел в десятичные и обратно.
Поскольку данная программа является приложением Windows, то для ее реализации будем использовать стандартный подход для написания программ под Windows с использованием графического интерфейса. Отдельно создадим форму с элементами управления, для различных элементов управления сопоставим процедуры-обработчики. Далее, как только происходит событие на каком-то из элементов управления (щелчок мыши, нажатие на кнопку, и т.д.), операционная система посылает приложению соответствующее сообщение, и запускается соответствующий обработчик именно для этого события. Тогда решение задачи можно разбить на три этапа:
На первом этапе целесообразно выполнить разработку интерфейса таким образом, чтобы пользователь мог выбрать нужную ему операцию и ввести исходные данные. При выполнении второго этапа следует учесть, что реализация форм с использованием платформы .NET не должна влиять на логику программы, а следовательно весь код будет организован во взаимодействии пользовательских классов без привязки к интерфейсу.
Функции в свою очередь могут вызывать функции более низкого уровня и так далее. Таким образом, каждая модульная программа имеет иерархическую структуру. Следует заметить, что обработчики событий от объектов экранных форм тоже реализуются как функции.
На третьем этапе при отладке приложения обязательно должна анализироваться правильность работы на исходных тестовых образцах. На этом этапе нужно проверить соответствие разработанной программы исходному заданию, а также проверить ее на отсутствие ошибок.
Подытожив все вышесказанное можно сформулировать требования к разрабатываемому программному обеспечению и выполнить постановку задания на проектирование.
Программа должна быть реализована
с графическим интерфейсом
Проанализировав основные
особенности языка
Язык программирования
C# призван практически
Принципиально важным отличием от предшественников является изначальная ориентация на безопасность кода (что особенно заметно в сравнении с языками C и C++).
Унифицированная, максимально близкая по масштабу и гибкости к CommonTypeSystem, принятой в Microsoft .NET, система типизации является важным преимуществом языка C#.
Язык программирования C# является «родным» для создания приложений в среде Microsoft .NET, поскольку наиболее тесно и эффективно интегрирован с ней.
Языку C# присущи следующие характеристики:
1)гибкость(программы могут выполняться на удаленном компьютере)
2)мощность(имеет такой же набор команд как и С++, но со сглаженными ограничениями)
3)легкость в использовании(
4)визуальная
Объединение лучших идей современных языков программирования (Java, C++, VisualBasic и др.) делает язык C# не просто суммой их достоинств, а языком программирования нового поколения.
Словесный алгоритм программы
Программа начинается с вызова обработчиков событий от элементов экранных форм. Первоначально на экране появляется окно программы с необходимыми полями ввода чисел. Для ввода чисел в двоичной системе счисления необходимо заполнить соответствующее поле цифрами с двоичном формате, т.е. 0 и 1. Для запуска перевода чисел, необходимо нажать клавишей мыши на стрелку-обработчик запросов, или нажать кнопку Enter, после чего, в поле десятичных чисел появится результат счисления. При необходимости перевода чисел из десятичной системы счисления в двоичную, в поле ввода десятичных чисел вводится число в десятичном формате, и, аналогично нажимается стрелка перевода, в поле ввода двоичных чисел, никакие другие цифры кроме 1 и 0 вводится не будут. Если необходимо перевести вещественное число, то целая часть отделяется от дробной символом «.» (точка). Если введенное число отрицательное, то в результат приписываем знак «-». Реализован 4-х байтовый формат.
4-x байтовая ячейка памяти. В
ячейке должна содержаться
- порядок;
- значащие цифры мантиссы.
8 бит 1-го байта содержат машинный порядок. В следующих трех байтах хранятся значащие цифры мантиссы (24 разряда).
Хранение результата вычислений удобнее хранить в стеке.
Стек – это область памяти, специально выделяемая для временного хранения данных программы. Отличительной особенностью стека является особая организация обращения к нему со стороны МП. Запись и чтение данных в стеке осуществляется в соответствии с принципом LIFO (Last In First Out) – «последним пришел, первым ушел». Таким образом, информация в стеке размещается в строгой последовательности – ячейка памяти, заполненная последней, считывается первой, а ячейка памяти заполненная первой извлекается последней. В ячейки стека информация заносится последовательно и извлекается в порядке обратном порядку занесения. Таким образом, стек функционирует как память с последовательным доступом. По мере записи данных в стек он растёт в сторону младших адресов.
Алгоритм перевод из десятичной системы счисления в двоичную систему счисления.
Вначале переводится целая часть десятичной дроби в двоичную систему счисления. Затем дробная часть десятичной дроби умножается на основание двоичной системы счисления. В полученном произведении выделяется целая часть, которая принимается в качестве значения первого после запятой разряда числа в двоичной системе счисления;
Алгоритм завершается, если дробная часть полученного произведения если достигнута необходимая точность вычислений. В противном случае вычисления продолжаются с предыдущего шага.
Алгоритм перевода смешанного десятичного числа в двоичное:
перевести целую часть, затем перевести дробную часть,сложить полученные результаты.
Алгоритм перевода целого десятичного числа в двоичное:
последовательно выполнять деление целого десятичного числа и получаемых целых частных на 2 до тех пор, пока не получится частное, меньшее 2;
записать полученные остатки в обратной последовательности.
Спецификация переменных
Таблица 1 – Спецификация переменных
Идентификатор |
Тип |
Описание |
Х |
double |
Изначальное введенное число |
whole |
int |
Целая часть дробного числа |
fract |
float |
Дробная часть числа |
i |
int |
Счетчик |
Приложение А
(блок схема алгоритма перевода с десятичной системы в двоичную систему)
начало
А
Вывод содержимого стека
Остаток от деления на 2 записываем в стек
оороорооороро
Разложение целой части, пока число >1
Выделяем дробную часть
Выделяем целую часть
Берем модуль числа
Дописываем «-» в ответ
Число<0
Вводим число
Приложение Б
(продолжение)
Запись целой части 1 или 0
Умножаем дробную часть на 2
Разложение дробной части, пока !=0
Дописываем «.»
Дробная часть >0
А
Запись в результат
Вывод результата
конец
Приложение В
(блок схема алгоритма перевода двоичной системы в десятичную систему)
начало
Конец
Вывод результата
Заносим в результат
Справа налево умножаем на 2 степени разряда с 0
Заносим в результат
число умножаем на 2 в степени разряда, начиная с-1
От точки до конца строки переводим дробную часть
Заносим в результат
число умножаем на 2 в степени разряда, начиная с нулевого
Справа налево переводим целую часть
Если нашли точку
Дописываем «-»в ответ
Если первый символ «-»
Вводим число
Приложение Г