- •197376, Санкт-Петербург, ул. Проф. Попова, 5.
- •1.5 Текст программы.
- •1.7 Структурная схема аппаратных средств, используемых при выполнении программы
- •2. Исследование видеосистемы (текстовый режим)
- •2.7 Структурная схема аппаратных средств, используемых при выполнении программы
- •1.4 Блок-схема алгоритма……………………………………………………… ..4
- •2.4 Блок-схема алгоритма………………………………………………………...8
Министерство образования и науки Российской Федерации
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ "ЛЭТИ" ИМЕНИ В.И. УЛЬЯНОВА (ЛЕНИНА)
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 Пример запуска программы