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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Lusa
0 / 0 / 0
Регистрация: 03.05.2010
Сообщений: 14
#1

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

24.10.2010, 17:02. Просмотров 1539. Ответов 0
Метки нет (Все метки)

Дали задание на побитовые логические операции и операции сдвига, а я в них ничего не понимаю.
Помогите пожалуйста решить эти задачи, очень надо!
Во вложенном файле 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 Кб, 73 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2010, 17:02     Битовые операции
Посмотрите здесь:

Битовые операции - C++
Доброго времени суток! Есть задача: Даны два целых без знаковых числа. Остатки от деления их на 16 заносятся соответственно в 4 младших и...

Битовые операции - C++
Собсно,если используется 4 байтовая переменная,то почему она представлена 16 битами(1010 0110 0010 0110),а не 32 битами?

Битовые операции - C++
Напишите программу в которой обьявите короткое целое со значением 12345 и определите путем выполнения битовых операций С++ установлены...

Битовые операции - C++
Народ дайте ссылку пожалуйста на задачи по сишке где нужно использовать битовые операции! Желательно с решениями!

Битовые операции - C++
Есть код signed int a = 10; a = !a; cout &lt;&lt; a; Выводит 0, объясните, почему??

Битовые операции - C++
Здраствуйте, помогите, пожалуйста! Надо написать три функции, используя только битовые (для первых двух) и только битовые и...

Битовые операции - C++
#include&lt;iostream&gt; #include&lt;climits&gt; int main() { unsigned int a = UINT_MAX; unsigned short b = USHRT_MAX; std::cout &lt;&lt;...

Битовые операции - C++
Всем привет! Помогите решить интересную задачу! Нужно ниже указный код переписать без условных операторов используя только битовые операции...

Битовые операции - C++
Приветствую! Изучаю C++, не могу освоить битовые операции (перемещение, исключающие или, инвертирование всякое). Просто не понимаю...

Битовые операции - C++
Не могу разобраться с 4 заданием Реализовал пятое но не в одну строчку и без понятия как сделать в одну П.5.18.Правил Запрещено...

Битовые операции - C++
С помощью битовых операций выести на экран значение к-ого спарва бита. Помогите пожалуйста!что-то в этих битовых операциях не...

Битовые операции - C++
Здравствуйте! нужно решить задачу: в целом числе заменить младший бит старшего байта на 1 решается ли это битовыми сдвигами? и...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru