Отчет. Лабораторная работа №1
.doc
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Санкт-Петербургский государственный электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)»
(СПбГЭТУ)
кафедра ВТ
ОТЧЕТ
по лабораторной работе № 1
по дисциплине Организация ЭВМ
Тема: ИССЛЕДОВАНИЕ ВНУТРЕННЕГО ПРЕДСТАВЛЕНИЯ РАЗЛИЧНЫХ ФОРМАТОВ ДАННЫХ
Вариант 5
Выполнил: Зыков Александр
Факультет КТИ
Группа № 1363
Преподаватель Монько А.О.
Оценка ________________________
Подпись преподавателя __________
Санкт-Петербург
2013
Задание:
1. Разработать алгоритм ввода с клавиатуры типов данных int и float и показать на экране их внутреннее представление в двоичной системе счисления.
2. Написать и отладить программу на языке С++, реализующую разработанный алгоритм.
3. Поменять местами заданные пользователем группы рядом стоящих бит, номера старших разрядов этих групп и количество бит в группе, вводится с клавиатуры.
Блок-схема алгоритма
Текст программы
#include <iostream>
#include <locale.h>
#include <math.h>
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<<"Введите кол-во бит в группе:"<<endl;
int size_group;
cin>>size_group;
size_group--;
cout<<"Введите номер старшего бита в 1 группе:"<<endl;
int bit_1;
cin>>bit_1;
cout<<"Введите номер старшего бита в 2 группе:"<<endl;
int bit_2;
cin>>bit_2;
if (bit_1<bit_2)
{
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<<endl<<"end of 1"<<endl;
cout<<"Введите число (float)"<<endl;
float in2;
cin>>in2;
union {
float num; //4 байта
unsigned int byte4; //4 байта
} uni2;
uni2.num = in2;
printBinary(uni2.byte4);
cout<<endl<<"end of 2"<<endl;
invert(uni2.byte4);
cout<<endl;
printBinary(uni2.byte4);
cout<<endl;
//system("pause");
cin.get();
return 0;
}
Пример запуска программы
Вывод
Были изучены представления различных типов данных в памяти компьютера, а так же способы их вывода и изменения. Теоретические знания были применены на практике