Ім'я файлу: Алгоритмизация_и_Программирование_3.pdf
Розширення: pdf
Розмір: 331кб.
Дата: 25.11.2022
скачати
Пов'язані файли:
1662736694856116.doc

Дисциплина. Алгоритмизация и программирование. Вид аудиторных занятий. Лабораторные работы. Тема. Программирование на С. Раздел. Битовые поля. Операции с битовыми полями единиц информации. Алгоритмы побитной обработки единиц информации. с) 2022 Лосихин ДА, кафедра ИС, УГХТУ Лабораторная работа №3 Битовые поля. Операции с битовыми полями единиц информации. Алгоритмы
побитной обработки единиц информации. Программное обеспечение
1. Кроссплатформенная среда разработки Code::Blocks с поддержкой компилятора
MinGW / GCC C/C++.
2. Среда разработки Visual Studio 20XX. Построение приложений для Windows.
3. Калькулятор –> Вид –> Программист. Объект изучения. Битовые поля. Единицы информации. Предмет изучения. Операции с битовыми полями единиц информации. Алгоритмы побитной обработки единиц информации. Цель. Разработать проект программы на С/С++ для эмуляции файла регистров микропроцессора, и изучения операций с битовыми полями и алгоритмов побитной обработки единиц информации. Для выполнения работы необходимо знать, с учётом накопленных знаний по предыдущим темам, операции над целыми операндами, оператор вычисления размера, а также дополнительно, структурированные типы данных массив, структура, битовые поля. В результате выполнения работы необходимо уметь. Составлять битовые поля для машинно-зависимых приложений. Составлять алгоритмы побитной обработки единиц информации применение маски для шифрования применение маски для идентификации обмен информацией битовых полей коррекция отдельных бит информации преобразование в обратный и дополнительный код. Ход работы
1. Запустить среду разработки и создать пустой проект программы.
2. Написать, для начала, программу, состоящую из одного исходного файла.
int main(void)
{
return;
}
3. Подключить к проекту внешнюю библиотеку ввода/вывода stdio и свою библиотеку функций my_fnc, где описана и определена функция представления целых чисел в двоичном формате – printb. Например,
void printb(unsigned int value, short number_of_position)
{
number_of_position
--;
int
bit_position;
for
(bit_position=number_of_position;bit_position>=0;bit_position--)
printf("%d", value >> bit_position & 1);
Дисциплина. Алгоритмизация и программирование. Вид аудиторных занятий. Лабораторные работы. Тема. Программирование на С. Раздел. Битовые поля. Операции с битовыми полями единиц информации. Алгоритмы побитной обработки единиц информации. с) 2022 Лосихин ДА, кафедра ИС, УГХТУ
}
4. Определить в библиотеке my_fnc битовые поля для виртуального файла из трёх 8- битных регистров А, В, С микропроцессора, структурированные полубайтами. Например,
struct REGISTERS6x4
{
unsigned AL : 4; младший полубайт регистра А
unsigned AH : 4; старший полубайт регистра А
unsigned BL : 4;
unsigned BH : 4;
unsigned CL : 4;
unsigned CH : 4;
};
5. Описать и инициализировать в программе переменную типа структурированных битовых полей, например,
struct REGISTERS6x4 registers6x4;
registers6x4.AL = 0x3;
registers6x4.AH = 0x9;
registers6x4.BL = 0x5;
registers6x4.BH = 0x5;
registers6x4.CL = registers6x4.AL & registers6x4.BL;
registers6x4.CH = registers6x4.AH & registers6x4.BH;
6. Вывести на экран дисплея информацию, записанную в виртуальных регистрах А, В, Св шестнадцатеричном ив двоичном формате, например, для регистра А
printf("AH_AL = %#X", registers6x4.AH);
printf("%X\n", registers6x4.AL);
printf("AH_AL = 0b");
printb(registers6x4.AH, 4);
printb(registers6x4.AL, 4);
7. Вычислить и вывести на экран дисплея размер файла регистров, например,
printf("size of register file = %d byte(s)\n\n",
sizeof(registers6x4)); Убедитесь, что операция вычисления размера с помощью оператора sizeof неприменима к операндам типа битовых полей.
8. Описать и инициализировать нулём беззнаковую переменную целого типа, размер которой 1 байт. Вычислить и вывести на экран дисплея размер этой переменной в битах, например,
Дисциплина. Алгоритмизация и программирование. Вид аудиторных занятий. Лабораторные работы. Тема. Программирование на С. Раздел. Битовые поля. Операции с битовыми полями единиц информации. Алгоритмы побитной обработки единиц информации. с) 2022 Лосихин ДА, кафедра ИС, УГХТУ
unsigned char c = 0;
printf("\nsizeof c = %d bit(s)\n\n", sizeof(char) * 8);
9. охранить два битовых поля побита, учитывая старший и младший полубайты, водной 8-битной переменной. Результат вывести на экран дисплея в двоичном формате. Например,
c = registers6x4.CH;
c <<= 4;
c |= registers6x4.CL;
printf("c = 0b");
printb(c, 8);
10. Извлечь из 8-битной переменной с младший полубайт и поместить в битовые поля определённой ранее структуры, например, в BL, а старший полубайт поместить в BH. Результат вывести на экран дисплея в двоичном формате. Например,
registers6x4.BL = c;
c >>= 4;
registers6x4.BH = c;
printf("BH_BL = 0b");
printb(registers6x4.BH, 4);
printb(registers6x4.BL, 4);
11. Описать переменные x, y, z целого типа int. Инициализировать переменные x, y. Применить маску y для шифрования информации, находящейся в переменной x. Результат вывести на экран дисплея в двоичном формате. Например,
int x = 0x52;
int y = 0x23; шифр
int z; шифровка
printf("\nx = 0b"); printb(x, 8);
printf("\ny = 0b"); printb(y, 8);
z = x^y; шифрование получаем шифровку
printf("\nz = 0b"); printb(z, 8);
z ^= y; //дешифрование; получаем исходную информацию x
printf("\nz = 0b"); printb(z, 8);
12. Описать переменную m целого типа int. Применить маску m для идентификации отдельных бит информации, например, й и й биты маски равны 1 остальные биты равны
0, чтобы узнать, чему равный и й биты информации, находящейся в переменной x. Результат вывести на экран дисплея в двоичном формате. Например,
int m = 18; //0b00010010 - маска
z = x & m;
printf("\nx = 0b"); printb(x, 8);
printf("\nm = 0b"); printb(m, 8);
Дисциплина. Алгоритмизация и программирование. Вид аудиторных занятий. Лабораторные работы. Тема. Программирование на С. Раздел. Битовые поля. Операции с битовыми полями единиц информации. Алгоритмы побитной обработки единиц информации. с) 2022 Лосихин ДА, кафедра ИС, УГХТУ
printf("\nz = 0b"); printb(z, 8); Анализ если z = 0, оба бита в x = 0; если z = m, оба бита в х = 1; если x = 2^1, 1-ца только во м бите ха если x = 2^4, то только в м бите х.
13. Обмен значений переменных x и y без использования промежуточной переменной. Результат выводим на экран дисплея в двоичном формате.
printf("\nx = 0b"); printb(x, 8);
printf("\ny = 0b"); printb(y, 8);
x ^= y;
y ^= x;
x ^= y;
printf("\nx = 0b"); printb(x, 8);
printf("\ny = 0b"); printb(y, 8);
14. Установить 1-ный битв заданную битовую позицию переменной x. Результат вывести на экран дисплея в двоичном формате. Например,
printf("\nx = 0b"); printb(x, 8);
m = 0x10; //0b00010000 - маска
printf("\nm = 0b"); printb(m, 8);
x |= m;
printf("\nx = 0b"); printb(x, 8);
15. Установить вой битв заданную битовую позицию переменной x. Результат вывести на экран дисплея в двоичном формате. Например,
printf("\nx = 0b"); printb(x, 8);
m = 0x10; //0b00010000 - маска
printf("\nm = 0b"); printb(m, 8);
m =

m;
printf("\nm = 0b"); printb(m, 8);
x &= m;
printf("\nx = 0b"); printb(x, 8);
16. Заменить заданную битовую позицию переменной x на противоположную. Результат вывести на экран дисплея в двоичном формате. Например,
printf("\nx = 0b"); printb(x, 8);
m = 0x17; //0b00010000 - маска
printf("\nm = 0b"); printb(m, 8);
x ^= m;
printf("\nx = 0b"); printb(x, 8);
Дисциплина. Алгоритмизация и программирование. Вид аудиторных занятий. Лабораторные работы. Тема. Программирование на С. Раздел. Битовые поля. Операции с битовыми полями единиц информации. Алгоритмы побитной обработки единиц информации. с) 2022 Лосихин ДА, кафедра ИС, УГХТУ
17. Преобразовать значения переменной y в дополнительный код. Сделать проверку вычитанием и сложением. Результат вывести на экран дисплея в двоичном формате. Например,
printf("\nx = 0b"); printb(x, 8);
printf("\ny = 0b"); printb(y, 8);
z = x - y; проверка результат вычитания = 0b"); printb(z, 8); или = y + 1; дополнительный код y
printf("\ny = 0b"); printb(y, 8);
z = x + y; проверка результат сложения = 0b"); printb(z, 8);
18. Оформить лабораторную работу по пунктам 4, 5, 6, 8-17.
19. Ответить на контрольные вопросы:

Что представляют собой массив, структура, битовые поля в языке С?

Как обращаться к отдельным элементам битовых полей?

Как вычислить размер переменной в битах?

Объясните алгоритм шифрования и дешифрования информации с
использованием побитовой операции исключающее ИЛИ».

Объясните алгоритм идентификации отдельных бит информации.

Объясните алгоритм обмена значений двух переменных без использования промежуточной переменной.

Объясните алгоритмы замены отдельных бит информации на 1; на 0; на противоположный.

Как преобразовать единицу информации в обратный код?

Как преобразовать единицу информации в дополнительный код

скачати

© Усі права захищені
написати до нас