Отчет. Лабораторная работа №1. Исследование внутреннего представления различных форматов данных
Скачать 147.5 Kb.
|
МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В.И. Ульянова (Ленина)» (СПбГЭТУ) кафедра ВТ ОТЧЕТ по лабораторной работе № 1 по дисциплине Организация ЭВМ Тема: ИССЛЕДОВАНИЕ ВНУТРЕННЕГО ПРЕДСТАВЛЕНИЯ РАЗЛИЧНЫХ ФОРМАТОВ ДАННЫХ Вариант 5 Выполнил: Зыков Александр Факультет КТИ Группа № 1363 Преподаватель Монько А.О. Оценка ________________________ Подпись преподавателя __________ Санкт-Петербург 2013 Задание: 1. Разработать алгоритм ввода с клавиатуры типов данных int и float и показать на экране их внутреннее представление в двоичной системе счисления. 2. Написать и отладить программу на языке С++, реализующую разработанный алгоритм. 3. Поменять местами заданные пользователем группы рядом стоящих бит, номера старших разрядов этих групп и количество бит в группе, вводится с клавиатуры. Блок-схема алгоритма Текст программы #include #include #include using namespace std; void printBinary(unsigned int var){ unsigned int mask=1<<31; for(int i= 0; i< sizeof(unsigned int)*8; ++i){ var&mask?cout<<1:cout<<0; mask>>= 1; } } void invert(unsigned int arg){ cout<<"Введите кол-во бит в группе:"< int size_group; cin>>size_group; size_group--; cout<<"Введите номер старшего бита в 1 группе:"< int bit_1; cin>>bit_1; cout<<"Введите номер старшего бита в 2 группе:"< int bit_2; cin>>bit_2; if (bit_1 { int temp=bit_1; bit_1=bit_2; bit_2=temp; } unsigned int mask_1 = 2, mask_2 = 0; mask_1 = mask_1 << size_group; mask_1 --; mask_2 = mask_1; mask_1 = mask_1 << (bit_1-size_group); mask_2 = mask_2 << (bit_2-size_group); mask_1 = mask_1&arg; mask_2 = mask_2&arg; unsigned int mask_3 = 0xFFFFFFFFu; mask_3 = mask_3 ^ mask_1; mask_3 = mask_3 ^ mask_2; arg = arg & mask_3; mask_1 = mask_1 >> bit_1-bit_2; mask_2 = mask_2 << bit_1-bit_2; arg = arg | mask_1; arg = arg | mask_2; cout << "RESULT: \n"; printBinary(arg); } int main () { setlocale(LC_ALL, "rus"); cout<<"Введите число (short int)"; int in1; cin>>in1 union { int num; // 2байта unsigned int byte4; // 1байт } uni1; uni1.num = in1; printBinary(uni1.byte4); cout< cout<<"Введите число (float)"< float in2; cin>>in2; union { float num; //4 байта unsigned int byte4; //4 байта } uni2; uni2.num = in2; printBinary(uni2.byte4); cout< invert(uni2.byte4); cout< printBinary(uni2.byte4); cout< //system("pause"); cin.get(); return 0; } Пример запуска программы Вывод Были изучены представления различных типов данных в памяти компьютера, а так же способы их вывода и изменения. Теоретические знания были применены на практике |