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

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

Автор:   •  Октябрь 20, 2023  •  Лабораторная работа  •  2,208 Слов (9 Страниц)  •  93 Просмотры

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

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

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

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

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

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

ОТЧЕТ

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

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

Тема: ИССЛЕДОВАНИЕ ВНУТРЕННЕГО ПРЕДСТАВЛЕНИЯ РАЗЛИЧНЫХ ФОРМАТОВ ДАННЫХ

Студенты гр. 1371

Малиева Д. И.

Преподаватель

Ельчанинов М. Н.

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

2022


Постановка задачи. 

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

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

Установить в заданное пользователем состояние определённое количество рядом стоящих бит, номер младшего из которых, как и всё остальное, вводится с клавиатуры.

 Ход работы

 [pic 1]

[pic 2]

#include <iostream> 

#include <limits> 

#include <Windows.h> 

using namespace std;

/*

Задание - вывести unsigned int и double

Установить в заданное пользователем состояние определённое количество рядом стоящих бит,

номер младшего из которых, как и всё остальное, вводится с клавиатуры.

*/

union myDouble {

        unsigned char arr[8];

    double value;

    long long integer;

};

void output_unsigned_int(unsigned int value) {

    int k = (int)value;

    int* arr = new int[32];

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

        arr[i] = k % 2;

        k = k / 2;

    }

    for (int i = 31; i >= 0; i--) {

        cout << arr[i];

    }

}

void output_unsigned_char(unsigned char value) {

    int k = (int)value;

    int* arr = new int[8];

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

        arr[i] = k % 2;

        k = k / 2;

    }

    for (int i = 7; i >= 0; i--) {

        cout << arr[i];

    }

}

void output_double(myDouble count) {

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

        output_unsigned_char(count.arr[7 - i]);

    }

}

unsigned int function_unsigned_int(unsigned int value, int rank, int amount, bool state) {

    for (int i = rank; i <= rank + amount; i++) {

        if (state)

            value |= (1 << i);

        else

            value &= (0 << i);

    }

    return value;

}

myDouble function_double(myDouble value, int rank, int amount, bool state) {

    for (int i = rank; i <= rank + amount; i++) {

        if (state)

            value.integer |= 1LL << i;

        else

            value.integer &= ~(1LL << i);

    }

    return value;

}

int main() {

    SetConsoleCP(1251);

    SetConsoleOutputCP(1251);

    int choice;

    cout << "Введите\n    0 - если хотите выйти," <<

...

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