Uploaded by Андрей Гутманский

ЛАБОРАТОРНАЯ РАБОТА Представление данных ПОВТ(2)

advertisement
ЛАБОРАТОРНАЯ РАБОТА
ПРЕДСТАВЛЕНИЕ ДАННЫХ В ЭВМ
1. ЦЕЛЬ РАБОТЫ
Целью работы является изучение способов представления
целочисленных величин в программах, написанных на языке С++ и
преобразование формы их представления и кодов
при выполнении
операторов ввода, присваивания между целочисленными переменными
различных форматов, суммирования и вывода.
2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ
2.1.Представление числовой информации в ЭВМ
В своей повседневной жизни мы для записи числовых значений целого
типа используем позиционную систему счисления с основанием 10, причем
используем прямые коды. Запись числа – это строка текста, состоящая из
последовательности цифр, перед которой может стоять знак. В математике
мы оперируем с целыми числами, множество значений которых бесконечно.
В компьютере для представления целых чисел используются двоичные
коды, длина которых n фиксирована и определяется форматом числа.
Количество целых чисел, которые можно представить в ЭВМ конечно и
равно 2n. Для представления целых чисел используется позиционная система
счисления с основанием 2. Используются числа без знака, принимающие
только положительные значения в диапазоне от 0 до 2n-1 и числа со знаком.
Для представления чисел со знаком используются дополнительные коды.
2.2.Изменение представления чисел при обработке в ЭВМ
Рассмотрим простейший цикл обработки чисел в ЭВМ, когда число вводится
с клавиатуры, сохраняется в памяти и затем выводится на дисплей.
Вводимое число представляет строку символов, представляющих значение
числа в десятичной позиционной системе счисления, записанное в прямом
коде. После нажатия клавиши Enter процессор обрабатывает эту строку в
соответствии с типом переменной, выделенной для его хранения, и
пересылает полученный двоичный код в память. Для целых чисел со знаком
это будет дополнительный код числа, представленного в двоичной
позиционной системе счисления. При этом происходит отображение
входного десятичного числа (множество таких чисел бесконечно) в
множество чисел, представимых для указанного формата представления
чисел в ЭВМ.
При выводе числа двоичный код числового значения из оперативной памяти
пересылается в процессор, где, в соответствие с форматом числа,
производится преобразование этого кода в последовательность символов,
представляющих число в десятичной позиционной системе счисления
записанное в прямом коде.
2.3.Форматы представления целых чисел в языке С++
. В программе на языке программирования высокого уровня имеется
раздел, где описываются используемые в программе переменные. Каждая
переменная имеет имя, тип и значение.
Имя переменной в железе соотносится с адресом ячейки памяти, с которого
начинается размещение данных.
Тип определяет размер выделяемой памяти и способ представления данных.
Для переменных целого типа используется дополнительный код при
представлении чисел со знаком.
Значение - это код который хранится в выделенной области памяти. Очень
важно знать, что если для переменной выделяется несколько байт памяти, то
они хранятся в памяти начиная с младшего байта.
В языке программирования С++ можно задать целые числа различных
типов.
тип
Диапазон значений
Тип значений
Формат
signed long int
-2147483648…2147483647 Целое со знаком 4 байта
unsigned long int 0…4294967295
Целое без знака 4 байта
signed char
-128 … 127
Целое со знаком 1 байт
unsigned char
0 … 255
Целое без знака 1 байт
signed short int
-32768 … 32767
Целое со знаком 2 байт
unsigned short int 0 … 65535
Целое без знака 2байт
Например описана переменная типа целое со знаком формата 4 байта. Если
вводится значение 129, то дополнительный двоичный код, который нужно
сохранить в памяти имеет значение
00000000 00000000 00000000 10000001
и он будет сохранен в четырех последовательных ячейках памяти, которые
будут хранить следующие коды
10000001
00000000
00000000
00000000
2.4.Выполнение оператора присваивания в языке С++
Синтаксис оператора присваивания
<переменная> =<выражение>
Выполнение оператора присваивания происходит за три шага.
Шаг 1. Вычисляется значение выражения.
Шаг 2. Тип полученного выражения преобразуется к типу переменной,
стоящей в левой части.
Шаг 3. Значение сохраняется в выделенной для переменной области памяти.
Когда выполняется оператор присваивания
а1 = а4
где а1 переменная целого типа со знаком формата 1 байт, а а4 переменная
целого типа со знаком формата 4 байта
передается один (первый) байт из памяти в которой хранится переменная а4.
Если значение переменной а4 равно 129, то по адресу переменной а1 будет
храниться код
10000001
Когда мы будем выводить значение переменной а1, то поскольку в старшем
разряде хранящегося кода записана 1, система программирования
интерпретирует его как отрицательное число, записанное в дополнительном
коде, переводит его в прямой код и мы увидим на экране значение -127
(отрицательное значение).
3.ЗАДАНИЕ
В программе определены переменные
Имя
Тип значений
переменной
tempA
Целое со знаком
tempB
Целое со знаком
a1
Целое без знака
b1
Целое без знака
c1
Целое без знака
a2
Целое со знаком
b2
Целое со знаком
c2
Целое со знаком
a3
Целое со знаком
b3
Целое со знаком
c3
Целое со знаком
Формат
4 байта
4 байта
1 байт
1 байт
1 байт
1 байт
1 байт
1 байт
2 байта
2 байта
2 байта
Выполняется программа, в которой реализован следующий алгоритм
Ввод tempA и tempB
//сегмент 1
a1 = tempA;
b1 = tempB;
c1 = a1 +b1;
вывод a1, b1, c1;
//сегмент 2
a2 = tempA;
b2 = tempB;
c2 = a2 +b2;
вывод a2, b2, c2;
//сегмент 3
a3 = tempA;
b3 = tempB;
c3 = a3 +b3;
вывод a3, b3, c3;
Вам необходимо для каждого из трех наборов целых чисел вашего варианта
заполнить таблицу, отображающую коды переменных и выводимые значения
со следующей структурой
tempA=
Имя
переменной
a1
b1
c1
Имя
переменной
a2
b2
c2
Имя
переменной
a3
b3
c3
tempB=
Сегмент 1
Двоичный код
Сегмент 2
Двоичный код
Сегмент 3
Двоичный код
Выводимое
значение
Выводимое
значение
Выводимое
значение
Пример оформления отчета для одного набора данных
А) 77710 = 00000000 00000000 00000011 000010012
В) 3778610 = 00000000 00000000 10010011 100110102
tempA=00000000 00000000 00000011
00001001
Имя
переменной
tempB=00000000 00000000 10010011
10011010
Сегмент 1
Двоичный код
Выводимое
значение
a1
b1
c1
Имя
переменной
a2
b2
c2
Имя
переменной
a3
b3
c3
00001001
10011010
10100011
Сегмент 2
Двоичный код
00001001
10011010
10100011
Сегмент 3
Двоичный код
00000011 00001001
10010011 10011010
10010110 10100011
9
154
163
Выводимое
значение
9
-102
-93
Выводимое
значение
777
-27750
-26973
При выполнении работы необходимо заготовить для каждого из трех
наборов целых чисел вашего варианта заполнить таблицу, отображающую
коды переменных и ожидаемые выводимые значения и направить их на
проверку преподавателю.
На следующем занятии происходит проверка правильности предсказаний и
анализ допущенных ошибок.
4. СОДЕРЖАНИЕ ОТЧЕТА О РАБОТЕ





Отчет должен содержать:
титульный лист;
цель работы;
таблица с кодами заданных пар целых чисел в формате целое со знаком 4
байта.
Таблицы выполнения программы для каждой пары чисел по указанной
выше форме.
Выводы по работе.
Download