Главная страница
Навигация по странице:

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

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

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

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

  • Организация ЭВМ. Лабораторная №1. Исследование внутреннего представления


    Скачать 159.24 Kb.
    НазваниеИсследование внутреннего представления
    АнкорОрганизация ЭВМ
    Дата24.05.2021
    Размер159.24 Kb.
    Формат файлаdocx
    Имя файлаЛабораторная №1.docx
    ТипИсследование
    #209257

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

    Санкт-Петербургский государственный

    электротехнический университет

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

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


    отчет

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

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

    Тема: Исследование внутреннего представления

    различных форматов данных



    Студент гр. 9891




    Палунин А.И.

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




    Чугунов Л.А.



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

    2021
    Цель работы.

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

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

    2. Написать и отладить программу на языке C++, реализующую разработанный алгоритм.

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

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









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

    #include
    void ShowBinaryShortInt (short int x)

    //Представление типа данных Short Int в памяти

    {

    unsigned long long* p = reinterpret_cast(&x);

    std::cout << "Номер бита: ";

    for (int i = 1; i <= sizeof(short int) * 8; i++)

    {

    std::cout<< i-1 <
    }

    std::cout << std::endl;

    std::cout << "Машин. код: ";

    for (int i = 1; i <= sizeof(short int) * 8; i++)

    {

    std::cout << ((*p) & 1)<
    (*p) >>= 1; // сдвигаем на 1 бит

    }

    std::cout << std::endl;

    }
    void InvertBitShortInt(short int x)

    //Инвертирование выбранных битов

    {

    int OldBit;

    int amountBit;

    do

    {

    std::cout << "Введите старший бит (значение должно принадлежать интервалу от 1 до 16): " << std::endl;

    std::cin >> OldBit;

    } while (OldBit>16);

    do

    {

    std::cout << "Введите количество битов, которые надо инвертировать (значение должно быть меньше значения старшего бита): " << std::endl;

    std::cin >> amountBit;

    } while (amountBit>OldBit);

    for (int i = (OldBit-1); i >= (OldBit - amountBit); i--)

    {

    x ^= (1 << i);

    }

    std::cout << "Значение инвентированных бит: " << std::endl;

    ShowBinaryShortInt(x);

    }
    void ShowBinaryDouble(double x)

    //Представление типа данных Double в памяти

    {

    unsigned long long* p = reinterpret_cast(&x);

    std::cout << "Представление в памяти числа типа Double (старший бит справа): ";

    for (int i = 1; i <= sizeof(double) * 8; i++)

    {

    std::cout << ((*p) & 1) << std::setw(1); // выводим самый правый бит

    (*p) >>= 1; // сдвигаем на 1 бит

    }

    std::cout << std::endl;

    }

    int main()

    {

    setlocale(LC_ALL, "Russian");

    int chosen;

    do

    {
    std::cout << "1. Представление типа данных Short Int в памяти и инверсия выбранных битов." << std::endl;

    std::cout << "2. Представление типа данных Double в памяти." << std::endl;

    std::cout << "3. Выход из программы." << std::endl;

    std::cin >> chosen;

    switch (chosen)

    {

    case 1:

    short int a;

    do

    {

    std::cout << "Введите число типа Short Int (значение должно быть от –32768 до 32767): " << std::endl;

    std::cin >> a;

    } while (a > 32767 || a < -32768);

    ShowBinaryShortInt(a);

    InvertBitShortInt(a);

    case 2:

    double b;

    do

    {

    std::cout << "Введите число типа Double (значение должно быть от -9223372036854775808 до 9223372036854775807): " << std::endl;

    std::cin >> b;

    } while (b > 9223372036854775807);

    ShowBinaryDouble(b);

    system("pause");

    case 3:

    break;

    }

    } while (chosen!=3);

    }


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

    Пример запуска программы с верными условиями.



    Пример запуска программы с неверными условиями.

    Вывод

    В результате выполнения лабораторной работы был изучен принцип внутреннего представления данных Short Int и Double.


    написать администратору сайта