Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт.doc
Скачиваний:
40
Добавлен:
09.02.2015
Размер:
144.38 Кб
Скачать

Министерство образования и науки Российской Федерации

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ "ЛЭТИ" ИМЕНИ В.И. УЛЬЯНОВА (ЛЕНИНА)

197376, Санкт-Петербург, ул. Проф. Попова, 5.

Факультет компьютерных технологий и информатики

Кафедра вычислительной техники

«ЗАЧТЕНО»

__________ О.А. Жирнова

“__” ____________ 2014 г.

ОТЧЕТ О ЛАБОРАТОРНЫХ РАБОТАХ

По дисциплине: "Организация ЭВМ и систем"

Шифр: ______

Студент группы 2302 Неробов Андрей

Санкт –Петербург 2014

1. Исследование внутреннего представления различных форматов данных

1.1 Цель работы

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

1.2 Задание

Номер варианта: 6

Разработать алгоритм ввода с клавиатуры данных Shot int , Double и показать на экране их внутреннее представление в двоичной системе счисления.

1.3 Порядок выполнения работы

1)Написать и отладить программу, реализующую разработанный алгоритм на рисунке 1.4.

2) Дополнить разработанный ранее алгоритм на рисунке 1.4 блоками для преобразования двоичного полученного кода исходного типа данных и последующего вывода преобразованного кода в двоичной системе счисления и в формате исходного данного на рис 1.7.

1.4 Блок-схема алгоритма

Double Shot int

Побитовая операция “и” c 1,cдвигаемой побитово вправо 64 раза. Запись результата.

Нет Да

Вывод в двоичной

1.5 Текст программы.

#include "stdafx.h"

#include "iostream"

#include <locale.h>

#include <conio.h>

#include <bitset>

using namespace std;

short int functionconvertnumber(short int);

short int change();

double functionconvertnumber2( );

int main()

{int shift,posttenshift;

char answer;

setlocale(LC_ALL, "rus");

cout<<"какой тип данных?(schort int или double)\n";

cin>>answer;

if(answer=='s')

{system("cls");

cout<<"Введите число в десятичной системе счисления\n";

short int tennumber;

cin>>tennumber;

short int *twonumber;

twonumber=new short int;

*twonumber=functionconvertnumber(tennumber);

cout<<"\n Продолжать работу y/n ?" ;

cin>>answer;

if(answer!='n'){

}else {return 0;}

cout<<"\n на сколько разрядов сдвинуть? \n";

cout<<"( c '-' влево,с '+' вправо )\n";

cin>>shift;

if(shift<0)

{ posttenshift=tennumber<<abs(shift);}

else

{posttenshift=tennumber>>abs(shift);}

cout<<"Результат в десятичной системе считсления "<<posttenshift<<"\n";

*twonumber=functionconvertnumber(posttenshift);

_getch();

}

else if(answer=='d')

{

functionconvertnumber2();

}

while(1)

{system("cls");

cout<<"\n Продолжать работу y/n ?" ;

cin>>answer;

if(answer!='n'){

main();}else {return 0;}}

}

short int functionconvertnumber(short int tennumber)

{ int temp,remnant,count1=0,count2=0,i=0;

short int *u;

u=new short int;

temp=tennumber;

for( count1=0;temp>0;count1++)//перевод в двоичную систему счисления

{ remnant=temp%2;

u[count1]=remnant;

temp=temp/2;

}

temp=tennumber;

short int *uu;

uu=new short int;

for( count2=0;temp>0;count2++)//перевод в 16-тиричную сичтему счисления

{ remnant=temp%16;

uu[count2]=remnant;

temp=temp/16;

}

cout<<"Число в двоичной сиситеме счисления \n";

for(int i=count1;i>0;i--)

{cout<<u[i-1];

}

cout<<"\nЧисло в шестнадцатиричной сиситеме счисления \n";

for(int i=count2;i>0;i--)

{if(uu[i-1]>9){

switch(uu[i-1])

{ case 10:cout<<"A";break;

case 11:cout<<"B";break;

case 12:cout<<"C";break;

case 13:cout<<"D";break;

case 14:cout<<"E";break;

case 15:cout<<"F";break;

}

}

else{cout<<uu[i-1];}}

return *u;

}

double functionconvertnumber2( )

{ double tendouble,temp1;

char answer;

int remant,count,temp,d[64],shift;

long long z=1;

cout<<"\nВведите число в десятичной системе счисления\n";

union { long long sy;

double sy1;

} number;

cin>>number.sy1;

for(int i=0;i<64;i++)// перевод double в двоичную систему счисления

{

if(number.sy&z)

d[i] = 1;

else

d[i] = 0;

z <<= 1;

}

cout<<"Число в двоичной сиситеме счисления \n";

for(int i=63;i>=0;i--)

{

cout << d[i];}

_getch();

cout<<"\n Продолжать работу y/n ?" ;

cin>>answer;

if(answer!='n'){

}else {return 0;}

cout<<"\n на сколько разрядов сдвинуть? \n";

cout<<"( c '-' влево,с '+' вправо )\n";

cin>>shift;

int d2[64];

for(int i=0;i<64;i++)

{d2[i]=0;

}

for(int i=0;i<63;i++)

{d2[i]=d[63-i];

//cout<<d2[i];

}

cout<<"\n";

for(int i=0;i<64;i++)

{d[i]=0;

}

if(shift<0)

{ for(int i=0;i<64;i++)//

{if(i>=abs(shift))

{d[i-abs(shift)]=d2[i];//влево

}

if(64-abs(shift)>i)

{d[i]=0;}

}

}

else

{for(int i=0;i<64;i++)

{if(i<=abs(shift))

{d[i]=0;}//вправо

else {d[i]=d2[i-abs(shift)];}

}}

for(int i=0;i<64;i++)

{cout<<d[i];}

_getch();

return 1; }

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

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