|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Задание 2. Побитовые операции на ЯП С/С++ЛАБОРАТОРНАЯ РАБОТА №5 Побитовые операции на ЯП С / С++
Цель работы: получить навыки программирования побитовых операций на ЯП С/С++
Задания для подготовки к работе 1. Изучить различные виды побитовых операций в ЯП С/С++ 2. Научиться использовать операции сдвига, логического И, ИЛИ и исключающего ИЛИ. 3. Разработать алгоритм и составить программу для решения задачи 4. Подобрать наборы тестовых данных.
Содержание отчета 1. Описание используемых структур данных. 2. Блок-схема алгоритма основной задачи. 3. Наборы тестовых данных с обоснованием их выбора. 4. Текст программы. 5. Описание и анализ ошибок, выявленных при отладке программы.
Краткие теоретические сведения Для осуществления сдвига последовательности бит влево и вправо применяются соответственно операции << и >>. Операнд справа от знака операции указывает, на какую величину должны быть сдвинуты биты, задавая тем самым количество бит, "выводимых" из переменной, и число нулевых бит, заполняющих переменную с другой стороны. Например: unsigned char A = 12; // A = 000011002 A = A << 2; // A = 001100002 A = A >> 3; // A = 000001102 Следует отметить, что операции логического сдвига влево и вправо на некоторое число бит аналогичны, соответственно, умножению и делению числа (находящегося слева от оператора) на 2, возведенное в эту степень: A << N = A * 2N A >> N = A / 2N На практике для осуществления доступа к отдельным битам, используются так называемые поразрядные логические операции, приведенные в таблице:
Результат применения оператора "логическое И" к двум битам равен единице только тогда, когда оба операнда установлены в единицу:
При логическом ИЛИ результат равен единице, если хотя бы один из участвующих в операции бит установлен в единицу:
Операция исключающего ИЛИ возвращает единицу только в том случае, если операнды не равны:
Наконец, операция "логическое НЕ" инвертирует биты (меняет значение на противоположное).
Например: int main() { int A, B, C;
A = 213, // A = 110101012 B = 10; // B = 000010102 // Установим 1 и 3 биты C = A | B; // C = 110111112
// Обнулим 1 и 2 биты B = 249; // B = 111110012 C = C & B; // C = 110100012
return 0; } Задание к работе Задание 1 Найти значение выражения согласно варианту. Для операций умножения и деления использовать сдвиг влево и вправо! Исходные данные считать из файла А, а результат записать в файл В.
Задание 2 Для заданных чисел выполнить действия, используя логические побитовые операции. Оформить вывод результата каждой операции в виде двоичных и десятичных кодов. Примечание: "Выделить" бит, означает обнулить все биты кроме указанных, а указанные оставить без изменений. Нумерация бит в данном задании для удобства осуществляется от 1 до 8 (справа налево). На практике же используется нумерация с 0.
Контрольные вопросы 1. Виды побитовых операций 2. Особенности выполнения побитового «сдвига влево», «сдвига вправо» 3. Объявление и работа с битовыми полями структур 4. Объединения и работа с ними
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |