Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

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

Автор:   •  Декабрь 15, 2023  •  Лабораторная работа  •  1,042 Слов (5 Страниц)  •  33 Просмотры

Страница 1 из 5

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ЛЭТИ» ИМ. В. И. УЛЬЯНОВА (ЛЕНИНА)

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

ОТЧЁТ

по лабораторной работе №1

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

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

Выполнила: Жилинко З.В

Преподаватель: Гречухин М. Н.

Санкт-Петербург

2023

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

Задание: разработать алгоритм ввода с клавиатуры требуемых типов данных и показать на экране их внутреннее представление в двоичной системе счисления. Написать и отладить программу на языке С++, реализующую разработанный алгоритм. В соответствии с заданием дополнить разработанный ранее алгоритм блоками для выполнения преобразования двоичного полученного кода исходного типа данных и последующего вывода преобразованного кода в двоичной системе счисления и в формате исходного данного.

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

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

[pic 1]

Рис. 1. Схема алгоритма

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

#include <iostream>

#include <string>

#include <conio.h>

#include <algorithm> 

using namespace std;

union num

{

    double d;

    char bytes[sizeof(double)];

};

string toBinary(unsigned char& t)

{

    string s = "";

    int n = sizeof(unsigned char) * 8;

    for (int i = n - 1; i >= 0; i--)

        {

            s += (t & (1 << i)) ? "1" : "0";

        }

    return s;

}

string toBinary(num t)

{

    string s = "";

    // little endian -> big endian

    for (unsigned i = 0; i < sizeof(double); i++)

    {

        for (int j = 0; j <= 7; j++)

        {

            s += (t.bytes[i] & ((1 << j)) ? "1" : "0");

        }

    }

    reverse(s.begin(), s.end());

    return s;

}

string Convert(string& s, short cnt, short r, unsigned char &x)

{

    // формируем строку

    string tmp = "";

    int r_t = r;

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

    {

        tmp += s[s.length() - 1 - r_t];

        r_t--;

    }

    // сдвиг

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

    {

        if (tmp[i] == char(49))

        {

            x >>= 1;

        }

        else

        {

            x <<= 1;

        }

        r--;

    }

    s = toBinary(x);

...

Скачать:   txt (6.6 Kb)   pdf (216.9 Kb)   docx (84.2 Kb)  
Продолжить читать еще 4 страниц(ы) »
Доступно только на Essays.club