Форум программистов, компьютерный форум CyberForum.ru

Битовые операции - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Lusa
0 / 0 / 0
Регистрация: 03.05.2010
Сообщений: 14
24.10.2010, 17:02     Битовые операции #1
Дали задание на побитовые логические операции и операции сдвига, а я в них ничего не понимаю.
Помогите пожалуйста решить эти задачи, очень надо!
Во вложенном файле 3.doc условие задач с примером выполнения.

Вот условия задач:

Задача 1:
Составить две программы, первая из которых вводит составные части структуры данных, приведенной в Вашем варианте индивидуального задания, и формирует из них заданную упакованную структуру. Вторая программа вводит упакованную структуру как 16-ричное число и выводит значения отдельных ее составных частей.

Элемент списка безопасности объекта в вычислительной системе представляется в виде:

разряда 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
Значение U U U U U U U U R W E 0 0 0 0 X
где:
U..U - идентификатор пользователя
R - Право читать
W - Право писать
E - Право выполнять программный код
X - явный запрет доступа


Задача 2:
Написать блоки перевода числа из десятичного в двоичный и обратно.


Задача 3:
Написать блоки преобразования числа в код Грея и обратно (результатом программы должны являться 2 таблицы с такими столбцами:
в первой: десятичное число, его двоичный эквивалент, эквивалент в коде Грея,
во второй: число в коде Грея, его двоичный эквивалент, его десятичный эквивалент
Примечание: теорию по коду Грея смотри в приложении.



Приложение: Код Грея
Код Грея, называемый также рефлексным (отражённым) двоичным кодом - одна из наиболее известных непозиционных систем счисления применяемых в вычислительной технике. Этот код строится из двоичных цифр таким образом, что соседние числа в нём отличаются всегда только в одном разряде. Кодов с такой же характеристикой много, но для кода Грея имеется простой алгоритм перевода чисел в двоичный позиционный код и обратно.
Для примера рассмотрим таблицу первых восми кодов Грея:
N Двоичный код Код Грея
0 000 000
1 001 001
2 010 011
3 011 010
4 100 110
5 101 111
6 110 101
7 111 100
Таблица 1 - Код Грея

Младший разряд в последовательности чисел в коде Грея принимает значения 0 и 1, затем следующий старший разряд становится единичным и младший разряд принимает свои значения уже в обратном порядке (1, 0). Этим и объясняется название кода - "отражённый". Соответственно, два младших разряда принимают значения 00, 01, 11, 10, а затем, при единичном следующем старшем разряде, те же значения в обратном порядке (10, 11, 01, 00).
Алгоритм перевода чисел в коде Грея в позиционный код прост: каждый разряд в позиционном коде равен сумме по модулю 2 этого и всех более старших разрядов в коде Грея. На С этот код выглядит следующим образом:
C++
1
for (unsigned i = 1; i < 32; i <<= 1) v ^= (v >> i)
До выполнения этого кода переменная v содержала число в коде Грея, после - в позиционном коде.
Перевод из позиционного кода в код Грея ещё проще: каждый разряд в коде Грея равен сумме по модулю 2 этого и следующего старшего разряда в позиционном коде. На C это реализуется следующим выражением:
C++
1
v ^ (v>> 1)
Вложения
Тип файла: doc 3.doc (69.5 Кб, 72 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2010, 17:02     Битовые операции
Посмотрите здесь:

Битовые операции C++
битовые операции C++
Битовые операции C++
Битовые операции C++
Битовые операции, битовые поля. C++
Битовые операции C++
Битовые операции и операции смещения языка С C++
Битовые операции C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 17:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru