Отчёт по Лабораторной Работе №1. Отчет по лабораторной работе 1 на тему Исследование внутреннего представления различных форматов данных
Скачать 102.43 Kb.
|
(1 << numbit);Минобрнауки России Федеральное государственное автономное образовательное учреждение высшего образования «Санкт-Петербургский государственный электротехнический университет им. В.И. Ульянова (Ленина)» (СПбГЭТУ «ЛЭТИ») Факультет компьютерных технологий и информатики Кафедра вычислительной техники ОТЧЕТ по лабораторной работе №1 на тему: «Исследование внутреннего представления различных форматов данных» по дисциплине: «Организация ЭВМ и систем» Выполнил студент группы № Принял: Гречухин М.Н. Санкт-Петербург 2018 г. Содержание Введение…………………………………………………...…..………………….3 Задание ……………………………………………………………………….3 Текст программы……………………………………………………………..6 Примеры запуска программы……………………………… ………………10 Структурная схема аппаратных средств, используемых при выполнении программы……………………………………………………………………11 Заключение………………………………………………………………………11 Введение Цель работы: знакомство с внутренним представлением различных типов данных, используемых компьютером при их обработке. 1. Задание 1. Написать программу, которая выводит на экран двоичное представление в памяти ЭВМ (все разряды) целого числа, как положительного, так и отрицательного. При выводе визуально обозначить знаковый разряд и значащие разряды (отступом, цветом и т. п.). 2. Написать программу, которая выводит на экран двоичное представление в памяти ЭВМ (все разряды) числа типа float и double. При выводе визуально обозначить знаковый разряд мантиссы, знаковый разряд порядка (если есть), мантиссу и порядок. 3. Написать программу, позволяющую изменить произвольные биты в целом числе и числе типа float на 1 или 0 по указанию пользователя (номер бита и значение вводятся с клавиатуры). 2. Текст программы #include "stdafx.h" #include using namespace std; union bitDouble { double number; unsigned long int bit[2]; }; union bitFloat { float number; unsigned long int bit; }; void outFloat(unsigned long int num) //вывод двоичного представления вещественного числа типа Float { for (int i = sizeof(unsigned long int) * 8 - 1; i >= 0; --i) { cout << ((num >> i) & 1); if ((i == sizeof(unsigned long int) * 8 - 1) || (i == sizeof(unsigned long int) * 8 - 9)) cout << ' '; } cout << endl; } void outDouble(unsigned long int* num) //Вывод двоичного представления вещественного числа типа Double { for (int i = 1; i >= 0; i--) { for (int j = sizeof(unsigned long int) * 8 - 1; j >= 0; j--) { cout << ((num[i] >> j) & 1); if ((i == 1) && ((j == sizeof(unsigned long int) * 8 - 1) || (j == sizeof(unsigned long int) * 8 - 12))) cout << ' '; } } cout << endl; } void outInt(int num) //Вывод двоичного представления целого числа типа int { for (int i = sizeof(int) * 8 - 1; i >= 0; --i) { cout << ((num >> i) & 1); if (i == sizeof(int) * 8 - 1) cout << ' '; } cout << endl; } int main() { int NUM; int menu; bitFloat FNUM; bitDouble DNUM; do { cout << " MAIN MENU " << endl; cout << " 1. Output bit" << endl; cout << " 2. Change bit" << endl; cout << " 0. Exit " << endl; cin >> menu; system("cls"); switch (menu) { case 1: cout << " Enter the integer number " << endl; cin >> NUM; outInt(NUM); cout << "Enter the double number " << endl; cin >> DNUM.number; outDouble(DNUM.bit); cout << "Enter the float number " << endl; cin >> FNUM.number; outFloat(FNUM.bit); break; case 2: bool type; bool switcher; int numbit; cout << "Choose data: 1. integer / 0. float" << endl; cin >> type; if (type == 1) { cout << " Enter an integer" << endl; cin >> NUM; int NewNum = NUM; do { cout << "Enter a number of bit" << endl; cin >> numbit; if (numbit < 0 || numbit > sizeof(int) * 8 - 1) cout << "Error! Enter a correct number of bit" << endl; } while (numbit < 0 || numbit > sizeof(int) * 8 - 1); cout << "Change this bit to 0 or 1?" << endl; cin >> switcher; if (switcher == 1) { NewNum |= 1 << numbit; cout << "Result:" << endl; outInt(NUM); outInt(NewNum); } else if (switcher == 0) { NewNum &= cout << "Result:" << endl; outFloat(FNUM.bit); outFloat(Newfnum.bit); } } break; case 0: break; } } while (menu != 0); system("pause"); return 0; }; 3 . Примеры запуска программы 4. Структурная схема аппаратных средств, используемых при выполнении программы Заключение При выполнении лабораторной работы получены знания внутреннего представления типов int, float и double, используемые компьютером при их обработке. |