Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаб7

.doc
Скачиваний:
33
Добавлен:
15.03.2016
Размер:
126.98 Кб
Скачать

10

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»

(НИУ «БелГУ»)

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И ПРИКЛАДНОЙ МАТЕМАТИКИ

КАФЕДРА МАТЕМАТИЧЕСКОГО И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИНФОРМАЦИОННЫХ СИСТЕМ

АВС и КС

Отчет по лабораторной работе №7

студента 1 курса группы 07011402

Черноморец Дарьи Андреевны

Проверил:

Лысых Владимир Витальевич

Белгород 2015

    1. Тема работы: Инфологические основы ЭВМ. Машинные коды.

Цель: Освоить способы машинные коды чисел и арифметические операции над числами в машинных кодах.

Задание

Вариант 7

Изучить теоретический материал.

2. Из таблицы №1 взять, согласно своему варианту, числа А10 и В10 и произвести сними следующие действия:

  1. вычислить прямой код чисел;

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

  3. определить дополнительный код чисел;

  4. определить модифицированный код чисел.

  5. сложить два числа А10 и В10 с фиксированной точкой в прямом, обратном и дополнительном кодах;

  6. произвести умножение и деление чисел;

3. Из таблицы №1 взять, согласно своему варианту, числа А10 и В10 и произвести с ними арифметические операции над двоично-десятичными кодами этих чисел

4. Из таблицы №2 взять, согласно своего варианта, числа А10 и В10 и произвести сними арифметические операции (числа с плавающей запятой).

5. Создать программу сложения двух чисел А10 и В10 с фиксированной точкой в прямом коде.

        1. Таблица №1

Вариант

А10

В10

7

616

400

        1. Таблица №2

Вариант

А10

В10

7

616,214

400,15

Выполнение работы

Задание 2

Задание 3

Задание 5

#include "stdafx.h"

#include<iostream>

using namespace std;

void main()

{

int a, b, k, k1, k2, k3, r, C[100], D[100], m1, m2, N[100], C1[100], D1[100];

cout<<"Input first number in decimal numeration: ";

cin >> a;

cout << "Input second number in decimal numeration: ";

cin >> b;

cout << "First number: a= " << a << endl;

k1 = 0;

//Перевести число a, представленное в десятичной СС, в двоичный код

//Запомнить остатки от деления на 2

while (a > 0)

{

r = a % 2;

C1[k1] = r;

k1 = k1 + 1;

a = a / 2;

}

cout << "Binary code of first number(10): ";

for (int i = 0; i <k1; i++)

{

C[i] = C1[k1 - 1 - i];

cout<< C[i];

}

cout << endl;

cout << "Second number: b= " << b << endl;

k2 = 0;

//Перевести число a, представленное в десятичной СС, в двоичный код

while (b > 0)

{

r = b % 2;

D1[k2] = r;

k2 = k2 + 1;

b = b / 2;

}

cout << "Binary code of second number(10): ";

for (int i = 0; i <k2; i++)

{

D[i] = D1[k2 - 1 - i];

cout << D[i];

}

cout << endl;

//сделаем введённые числа одинаковой длины в двоичном коде

if (k1 > k2)

{

k = k1;

k3 = k1 - k2;

//сдвинем на k3 элементов вправо

for (int i = k2 - 1; i >= 0; i--)

{

D[i +k3] = D[i];

}

//заполним k3 ведущих нулей

for (int i = 0; i < k3; i++)

{

D[i] = 0;

}

}//if

else

{

if (k2 > k1)

{

k = k2;

k3 = k2 - k1;

//сдвинем на k3 элементов вправо

for (int i = k1 - 1; i >= 0; i--)

{

C[i + k3] = C[i];

}

//заполним k3 ведущих нулей

for (int i = 0; i < k3; i++)

{

C[i] = 0;

}

}//if

}//else

m2 = 0;

cout << "Sum of first and second numbers= ";

for (int i = k - 1; i >= 0; i--)

{

m1 = C[i] + D[i] + m2;

if (m1 < 2)

{

N[i] = m1;

m2 = 0;

}

else

{

N[i] = m1 - 2;

m2 = 1;

if (i == 0)

{

//сдвинуть всё вправо

for (int n = k - 1; n >= 0; n--)

{

N[n + 1] = N[n];

}

N[0] = 1;

}

}

}

for (int i = 0; i < k; i++)

{

cout << N[i];

}

cout << endl;

system("pause");

}

Краткое изложение контрольных вопросов

  1. При вводе в ПК текста происходит его двоичное кодирование, т.е. изображение символа преобразуется в двоичный код.. в процессе вывода символа на экран производится обратный процесс - декодирование символа.

Принято интернациональное соглашение о присвоении каждому символу своего уникального кода. В качестве международного стандарта принята кодовая таблица ASCII (American Standard Code for Information Interchange). Диапазон кодов в ней: от 0 до 255. Первые 33 кода - соответствуют не символам, а операциям (перевод строки, ввод пробела и т.п.). Коды с 33 по 127 - символы латинского алфавита, знаки препинания, цифры и арифметические действия. Коды со 128 по 255 - для национальных алфавитов. Существует 5 различных кодовых таблиц для русских букв (КОИ8, CP1251, CP866, Mac, ISO). В настоящее время распространен международный стандарт Unicode, который отводит на каждый символ не один байт, а два. Поэтому с его помощью можно закодировать не 256 символов, а уже 2^16 = 65536 различных символов. Каждая кодировка задается собственной кодовой таблицей. Поэтому один и тот же символ в разных кодировках имеет разный двоичный код.

В процессе кодирования изображения производится его пространственная дискретизация, т.е. изображение разбивается на отдельные маленькие фрагменты (пиксели), причем каждому фрагменту присваивается значение его цвета (код цвета). Качество изображения определяется разрешающей способностью монитора, т.е. количество пикселей, из которых оно строится. Если рассматривать черно-белое изображение (черный или белый цвет), то для его хранения необходим 1 бит. Цветные изображения хранятся в двоичном коде каждой точки (пикселя). Они могут иметь различную глубину цвета, которая задается количеством бит, используемых для кодирования цвета точки. Наиболее распространены следующие значения: 8, 16, 24 и 32 бита.

Качество двоичного кодирования изображения определятся разрешающей способностью монитора и глубиной цвета. Цветное изображение на мониторе формируется за счет смешивания трех базовых цветов: красного, зеленого и синего (RGB-модель). Каждый цвет можно рассматривать как возможное состояние точки, тогда количество цветов, отображаемых на экране монитора, может быть вычислено по формуле: N = 2^I, где I - глубина цвета.

Для формирования на мониторе изображения, информация о каждом пикселе (код цвета точки) должна храниться в видеопамяти ПК.

Изобретение обратного и дополнительного кода возникло из-за желания сэкономить деньги при построении арифметико-логических устройств (АЛУ) вычислительных машин. В те далекие времена, когда даже самый слабенький компьютер занимал помещение в несколько комнат, каждый логический элемент, а тем более узел стоил существенных денег. Для того чтобы выполнить арифметическую операцию сложения, в АЛУ компьютера имеется специальный узел - сумматор, а для того чтобы выполнить вычитание, казалось бы, требуется "вычитатор", что влечет за собой дополнительные деньги. И тогда создатели первых компьютеров нашли способ производить операцию вычитания с помощью сумматора, используя для этого дополнительный код числа. То есть операция вычитания была заменена операцией сложения, где вычитаемое представлялось в дополнительном коде.

Целью введения модифицированных кодов являются фиксация и обнаружение случаев получения неправильного результата, когда значение результата превышает максимально возможный результат в отведенной разрядной сетке машины. В этом случае перенос из значащего разряда может исказить значение младшего знакового разряда. Значение знаковых разрядов «01» свидетельствует о положительном переполнении разрядной сетки, а «10» — об отрицательном переполнении. В настоящее время практически во всех моделях ЭВМ роль удвоенных разрядов для фиксации переполнения разрядной сетки играют переносы, идущие в знаковый и из знакового разряда.

  • 1. Сложение чисел начинается с младших цифр (тетрад) и производится с учетом возникающих переносов из младших разрядов в старшие.

  • 2. Знак суммы формируется специальной логической схемой по знаку большего слагаемого.

  • 3. Для того чтобы при сложении двоично-десятичных цифр возникали переносы, аналогичные при сложении чисел в десятичном представлении, необходимо проводить так называемую десятичную коррекцию. Для этого к каждой тетраде первого числа прибавляется дополнительно по цифре 610=01102, что позволяет исключить шесть неиспользуемых комбинаций (1010—1Ш)2, так как они кодируют шестнадцатеричные цифры А—/"(числа 10—1510).

  • 4. После операции суммирования осуществляется корректировка суммы. Из тех тетрад суммы, из которых не было переносов, изымаются ранее внесенные избытки 610=01102. Для этого проводится вторая коррекция. Операция вычитания заменяется, как и обычно, операцией сложения с числом -6, представленным дополнительным кодом 10102, но только в тех разрядах, в которых отсутствовали переносы. При этой второй коррекции переносы из тетрад блокируются.

  • 5. Операция вычитания реализуется достаточно своеобразно. По общему правилу сложения (см. п. 1—4) к тетрадам числа с большим модулем прибавляются дополнительные коды тетрад другого числа. При этом первая коррекция не проводится, так как в дополнениях тетрад она учитывается автоматически. Знак результата определяется по знаку числа с большим модулем.

Список контрольных вопросов

  1. Каким образом представляется в ЭВМ текстовая и графическая информация?

  2. Каково назначение обратного и дополнительного кодов?

  3. Каково назначение модифицированных обратного и дополнительного кодов?

  4. Как выполняются операции над двоично-кодированными десятичными числами? В чем сущность проведения коррекций?

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