Работа выполняется в консольном режиме. Выберите задачу вашего варианта.
Выберите задачу вашего варианта.
Спроектируйте в консольном режиме:
· функцию, решающую задачу индивидуального задания с использованием только логических операций (функция1);
· функцию, решающую задачу индивидуального задания с использованием только структурных битовых полей (функция 2);
· функцию main(), которая обращается к одной из функций. Ввод и вывод информации сделайте в шестнадцатеричной системе счисления.
Контроль правильности работы вашей программы осуществите на данных подготовленных вами для отладки функций.
Убедившись в правильности работы программ, представьте их преподавателю.
Дайте оценку для решения вашей задачи оптимальности того или другого способа обработки битовой информации.
Варианты индивидуальных заданий
Вариант 1.
Для кодировки данных, размещаемых в базе данных, использовалась следующая система кодировки. Четыре первых разряда кода (0, 1, 2, и 4) задают тип хранимой информации, пять следующих - шифр области знаний, к которой относится информация, девять последующих бит задают шифр владельца информации. Составить функцию, изменяющую одно из полей шифра.
Вариант 2.
Функция подсчитывает количества единиц в двоичном коде А, имеющем длину N
( 1 <= N <= 16 ).
Вариант 3.
Функция обеспечивает нахождение самой правой единицы в двоичном двухбайтовом коде А и записывает эту единицу в том же разряде кода В. Переменной С функция присваивает значение, равное номеру разряда, в котором стоит найденная единица.
Вариант 4.
Составить функцию kodSymb получения из байтового двоичного кода X двоичного кода Y, в котором биты кода Х расположены в обратной последовательности.
Составить функцию, шифрующую строку символов и расшифровывающую эту строку с помощью функции kodSymb.
Вариант 5.
Функция leftORright шифрует один байт информации, используя циклический сдвиг всех битов влево или вправо на N разрядов.
Составить функцию, шифрующую строку символов и расшифровывающую эту строку с помощью составленной функции leftORright.
Вариант 6.
Сортность каждого товара записана в двоичном двухбайтном коде X следующим образом. Для каждой единицы товара отводится диада, имеющая смысл:
· 00 -высший сорт,
· 01 - первый сорт,
· 10 - второй сорт,
· 11 -третий сорт.
В переменной записываются сведения о 8 товарах. Составить функцию, обеспечивающую уценку товаров указанного сорта на единицу. Предусмотреть невозможность уценки товаров третьего сорта.
Вариант 7.
Пусть данные о каждом из N студентов группы закодированы в виде четырехразрядного двоичного кода Х, содержащего следующие сведения:
· проживание в общежитии,
· окончание подготовительного отделения,
· участие в общественной работе,
· наличие неудовлетворительных оценок в последнюю сессию.
Составить функцию, проверяющую код студента на соответствие заданным критериям.
Используя функцию сформировать списки порядковых номеров студентов группы из N студентов, имеющих неудовлетворительные оценки в сессии и проживающих в общежитии.
Вариант 8.
Для кодировки товара использовалась следующая система кодировки. Два первых разряда кода (0 и 1) задают сорт товара, три следующих - шифр филиала завода изготовителя, на котором произведен товар, шесть последующих - шифр головного завода изготовителя. С некоторых пор используется новая система кодировки: сначала шифр головного завода изготовителя, затем шифр филиала и только потом сорт товара.
Составить функцию перекодировки товара.
Вариант 9.
При передаче информации по каналам связи из-за помех возможен ошибочный прием некоторых битов - 0 может быть воспринят как 1 и наоборот. Поэтому кодировка информации по каналу связи предусматривает при передаче утроение каждого передаваемого бита для повышения вероятности правильного приема сообщения. При расшифровке информации, полученной по каналу связи, каждые три бита заменяются одним, в который записывается та из цифр (0 или 1), которая встречается в триаде бит по крайне мере дважды.
Составить функцию, которая шесть байт информации, полученных по каналам связи "сжимает" до двух, производя ее расшифровку.
Вариант 10.
Следующий способ предназначен для шифровки последовательностей нулей и единиц (или же, например, точек и тире). Пусть - такая последовательность. То, что предлагается в качестве ее шифра, - это последовательность , образованная по следующему закону:
Составьте функцию, которая перекодирует один байт информации по указанному способу. Пользуясь функцией, составьте программу кодировки и перекодировки строки символов.
Вариант 11.
Функция подсчитывает сколько раз в двоичном коде А, имеющем длину N, встречается n рядом стоящих единиц. Организовать контроль чисел n и N.
Вариант 12.
Сортность каждого товара записана в двоичном двухбайтном коде X следующим образом. Для каждой единицы товара отводится диада, имеющая смысл:
· 00 -высший сорт,
· 01 - первый сорт,
· 10 - второй сорт,
· 11 -третий сорт.
В переменной записываются сведения о 8 товарах.
Составить функцию определения количества товаров заданного сорта, закодированного в двух байтах.
Вариант 13.
Составить функцию, которая каждый байт информации перекодирует по следующей схеме: для каждых 4 бит применяется зафиксированная перестановка. Группа битов s1, s2, s3, s4 меняется на s4, s3, s2, s1.
Используя функцию зашифровать строку символов и расшифровать.
Вариант 14.
Составить функцию подсчета ситуации, при которой одновременно в двух одинаковых разрядах двоичных кодов чисел X и Y появляются заданные сочетания 0 и 1.
Например, требуется подсчитать ситуацию (1,1):
разряды | ... | ... | ||||||||
X = | ... | ... | ||||||||
Y = | ... | ... | ||||||||
количество ситуаций | + | + | = 3 |
Вариант 15.
Функция формирует код, состоящий из слова, все нечетные биты которого инвертированы.
Функция, подсчитывает количество единиц в слове и, если их больше, чем количество нулей, то все нечетные биты инвертируются.
Вариант 16.
Функция формирует код, состоящий из слова, в котором в 0-7 биты записывает код ASCII символа, 12-14 биты число из диапазона 0-7, а все остальные биты обнуляет.
Вариант 17.
Электронный прибор включает 8 комплектующих деталей (первая, вторая и так далее). Для хранения информации о каждом ремонтируемом приборе заводится два байта, где кодируется:
· 0-6 биты - номер прибора по квитанции,
· каждый последующий бит содержит информацию о потребности комплектующей детали для ее ремонта (1 - комплектующая деталь требуется для ремонта этого прибора, 0 - не требуется). Номер комплектующей детали определяется справа на лево по порядку,
· 15 бит – информация о проведении ремонта.
Составить функцию формирования информации о каждом ремонтируемом приборе.
Составить функцию, которая по зашифрованной информации о приборе, составляет список номеров необходимых комплектующих деталей.
Вариант 18.
Данные о наличии необходимых 8 продуктах (номера продуктов считаются справа на лево) входящих в минимальную потребительскую корзину закодированы в двоичном коде одного байта ( 1 – продукт есть, 0 – продукта нет).
Составить функцию, определяющую по коду список номеров товаров, имеющихся в наличии.
Вариант 19.
Данные о наличии необходимых 8 продуктах входящих в минимальную потребительскую корзину закодированы в двоичном коде одного байта (1 – продукт есть, 0 – продукта нет).
Составить функцию, кодирующую информацию о товарах, имеющихся в наличии.
Вариант 20.
Составить функцию, которая каждую восьмеричную цифру, заданную кодом ASCII, шифрует, используя двоично-десятичный код «1 из 8».
цифра | код «1 из 8». | |||||||||
Используя разработанную функцию, составить функцию, которая кодирует и раскодирует строку, состоящую из восьмеричных цифр.
Вариант 21.
Составить функцию, которая каждые две восьмеричные цифры, заданные кодом ASCII, шифрует в один байт, используя двоично-десятичный код Джонсона.
цифра | код Джонсона | |||||
Используя разработанную функцию, составить функцию, которая кодирует строку, состоящую из восьмеричных цифр.
Вариант 22.
Составить функцию, которая в слове осуществляет циклический сдвиг одного бита влево.
Используя разработанную функцию циклического сдвига, составить функцию, которая подсчитывает количество единиц в левом и правом байтах слова, и если их количество оказывается равным, то меняет байты местами.
Вариант 23.
Составить функцию подсчета ситуаций, при которых одновременно в двух рядом стоящих разрядах двоичных кодов чисел X и Y появляются заданные сочетания 0 и 1.
Например, задается подсчитать ситуацию (1,0; 0,1):
разряды | ... | |||||||||
X = | ... | |||||||||
Y = | ... | |||||||||
количество ситуаций | + | + | = 2 |
Вариант 24.
Составить функцию, которая подсчитывает в слове количество трех битовых ситуаций, задаваемых через параметры в виде одной из восьмеричных цифр.
Вариант 25.
Функция получает слово, и если число, записанное в старшем байте оказывается больше числа, записанного в младшем байте, то все биты старшего байта инвертируются, а младший байт увеличивается на 1.
Вариант 26.
Составить функцию, которая переставляет в слове значения битов с номерами n1и n2 (n1не равно n2и меньше 16 ).
Вариант 27.
Составить функцию, которая обнуляет в слове биты от n1до n2 (n1 < n2 < 16 ).
Вариант 28.
Составить функцию, которая получив два неравных числа n1и n2,меньших 31, вычисляет сумму .
Вариант 29.
Для кодировки изделий, производимой фирмой, использовалась следующая система. Три первых бита кода (0, 1 и 2) задают номенклатуру изделия, четыре следующих - шифр технологического процесса, используемого при изготовлении изделия, девять последующих - шифр фирмы изготовителя. С некоторых пор используется новая система кодировки: сначала размещается шифр технологического процесса, затем шифр фирмы, и только потом шифр номенклатуры изделия.
Составить функцию перекодировки товара.
Вариант 30.
Функция подсчитывает в слове количество бит, равных 1, и если количество этих бит равно нечетному числу, то все нечетные биты устанавливаются в 0, в противном случае осуществляется циклический сдвиг всех битов влево на число, равное четному количеству бит, равных 1.
Вариант 31.
Составить функцию, которая в слове осуществляет циклический сдвиг одного бита вправо.
Используя разработанную функцию циклического сдвига, составить функцию, которая подсчитывает количество нулей в левом и правом байтах слова, и если их количество оказывается не равным, то меняет байты местами.
Вариант 32.
Сортность каждого товара записана в двоичном двухбайтном коде X следующим образом. Для каждой единицы товара отводится диада, имеющая смысл:
· 00 -высший сорт,
· 01 - первый сорт,
· 10 - второй сорт,
· 11 -третий сорт.
В двух байтах записываются сведения о 8 товарах.
Составить функцию изменяющую сорт товара с номером n (товар в коде имеет нумерацию от 0 до 7 ) на новый указанный сорт.
Вариант 33.
Составить функцию, которая преобразует двух байтное слово, вставляя самый старший и младший биты в середину слова.