Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по ВМСиС.doc
Скачиваний:
25
Добавлен:
05.06.2015
Размер:
2.31 Mб
Скачать

Объединение со структурой с битовыми полями в языке Си.

В языке Си существует особое понятие – структура с битовыми полями, которую также можно использовать для определения одного или группы бит.

Пример 2.14 Структура с полями, длиной в тетраду.

union{unsignedcharz;

struct { unsigned int x:4; // Младшая тетрада

unsigned int y:4; // Старшая тетрада }s; } un1;

Используя переменную un1.z, можно получить доступ к её отдельным тетрадам через переменныеun1.s.xиun1.s.y. Например, операторun1.s.y=0 обнуляет старшую тетраду.

А если использовать объединение un2 (Пример 2.14), то можно получить наиболее простой способ для доступа к отдельным битам. Например, операторun2.s.bit1=0 обнуляет первый бит, а операторun2.s.bit2_3=3 – устанавливает второй и третий биты одновременно.

Пример 2.15 Структура с полями с произвольной длиной.

union { unsigned char z;

struct { unsigned int bit0 :1; // Бит 0

unsigned int bit1 :1; // Бит 1

unsigned int bit2_3 :2; // Биты 2 и 3

unsigned int bit4 :1; // Бит 4

unsigned int bits5_7 :3; // Биты 5-7

} s; } un2;

Содержание отчета

Для защиты лабораторной работы каждым студентом должен быть написан отчет о лабораторной работе, оформленный в отдельной тетради для лабораторных работ по курсу «Вычислительные машины, системы и сети», включающий тему, цель работы и содержащий следующие пункты:

  1. Общие сведения о побитовых операциях.

  2. Задание на занятие.

  3. Алгоритм работы программы (блок-схема или словесное описание).

  4. Листинг программы (смысловая часть).

  5. Ответ на контрольный вопрос.

Контрольные вопросы

  1. Как именуют минимальную единицу информации?

  2. Сколько различных значений может хранить байт?

  3. Чем определяется разрядность слова? Чему она равна?

  4. Каким количеством основных цветов компьютером представляются все остальные цвета?

  5. Какими функциями следует пользоваться для вывода цветного текста?

  6. Каким образом переключается режим значения старшего бита цвета фона?

  7. Какому арифметическому действию эквивалентен сдвиг влево?

  8. Что такое маскирование? Что такое маска?

  9. Какие существуют побитовые операторы в языке Си? Напишите их значения.

  10. Опишите последовательность действий для установки бит в слове.

  11. Опишите последовательность действий для сбросабит в слове.

  12. Опишите последовательность действий для инверсии бит в слове.

Задание на занятие

  1. Написать программу для вывода на экран слова "Си++" шестнадцатью цветами символов на шестнадцати цветах фона (всего 256 сочетаний).

  2. Написать программу для вывода в двоичном виде числа, введённого с клавиатуры, используя операции маскирования битов ("&") и побитового сдвига (">>" и "<<").

    1. Определить значения произвольных трёх бит этого же введенного числа. Номера бит от 0 до 7 задаются с клавиатуры.

    2. Изменить значения трёх бит этого же введенного числа согласно своему варианту. Номера и значения бит задаются заранее. Вывести изменённое число в двоичном и десятичном виде.

Варианты

Первый бит

Второй бит

Третий бит

1

сбросить

2

установить

4

сбросить

5

сбросить

3

сбросить

6

установить

5

инвертировать

1

сбросить

0

инвертировать

5

сбросить

1

сбросить

0

инвертировать

5

сбросить

3

сбросить

6

инвертировать

0

сбросить

3

инвертировать

2

сбросить

2

инвертировать

3

установить

5

сбросить

2

установить

4

инвертировать

0

инвертировать

6

сбросить

4

инвертировать

0

установить

5

инвертировать

4

сбросить

1

установить

1

инвертировать

5

установить

7

установить

5

сбросить

7

установить

3

установить

5

инвертировать

2

сбросить

0

установить

6

установить

2

инвертировать

4

сбросить

6

сбросить

4

инвертировать

3

инвертировать

2

сбросить

6

сбросить

5

инвертировать

0

инвертировать

2

сбросить

4

установить

2

установить

5

установить

0

инвертировать

4

инвертировать

2

сбросить

5

установить

7

сбросить

2

инвертировать

6

установить

2

установить

0

установить

5

сбросить

1

сбросить

7

сбросить

3

установить

6

инвертировать

5

установить

4

установить

0

сбросить

3

установить

7

установить

2

сбросить

4

установить

1

сбросить