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

Отчет. Лабораторная работа №1

.doc
Скачиваний:
54
Добавлен:
09.02.2015
Размер:
151.04 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Санкт-Петербургский государственный электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)»

(СПбГЭТУ)

кафедра ВТ

ОТЧЕТ

по лабораторной работе № 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;

}

Пример запуска программы

Вывод

Были изучены представления различных типов данных в памяти компьютера, а так же способы их вывода и изменения. Теоретические знания были применены на практике

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