Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
5 / 5 / 0
Регистрация: 12.09.2020
Сообщений: 21
1

Объяснение алгоритма на зеркальное отображение двоичного представления числа

08.11.2020, 12:22. Показов 2900. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот есть такой алгоритм
C
1
2
3
A[i] = ((A[i] >> 1) & 0x55) | ((A[i] << 1) & 0xAA);
A[i] = ((A[i] >> 2) & 0x33) | ((A[i] << 2) & 0xCC);
A[i] = ((A[i] >> 4) & 0x0F) | ((A[i] << 4) & 0xF0);
A[i] - какое то число, не больше одного байта
И можете пояснить почему число сначала смещается на 1 бит вправо и логически умножается на 0x55, и логически складывается с числом смещенным на 1 бит влево и логически умноженным на 0xAA и так до конца? Как это работает?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.11.2020, 12:22
Ответы с готовыми решениями:

Зеркальное отображение двоичного кода числа
В матрице с числами типа BYTE инвертировать каждое число. Например 01→80 ,11→88,...

Получение двоичного представления числа
У меня есть число типа int в памяти компьютера оно (как собственно и вообще все) хранится как...

Вывод двоичного представления дсятичного числа.
Вот код. #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;stdlib.h&gt; /* Функция для вывода...

Произвести сортировку двоичного представления числа
Здравствуйте, помогите пожалуйста решить такую вот задачку: Дано целое неотрицательное число....

6
Диссидент
Эксперт C
27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
08.11.2020, 14:58 2
puulower, попробуй расписать константы по битам
0
5 / 5 / 0
Регистрация: 12.09.2020
Сообщений: 21
08.11.2020, 15:19  [ТС] 3
Байт, ну я так делал, все работает. Но почему используются именно такие числа? Как это объяснить?
0
Вездепух
Эксперт CЭксперт С++
12805 / 6679 / 1798
Регистрация: 18.10.2014
Сообщений: 16,910
08.11.2020, 16:47 4
Лучший ответ Сообщение было отмечено puulower как решение

Решение

Ну если алгоритм понятен, то и числа будут понятны. Алгоритм сначала меняет местами четные биты с нечетными. Два числа, используемые при таком обмене - это битовые маски четных и нечётных битов. Затем алгоритм аналогичным образом меняет местами соседние группы из двух битов. Числа - это битовые маски таких групп. И, наконец, алгоритм меняет местами группы по четыре бита. С соответствующими масками.
1
Злостный нарушитель
9682 / 5243 / 1197
Регистрация: 12.03.2015
Сообщений: 24,708
08.11.2020, 18:05 5
Лучший ответ Сообщение было отмечено puulower как решение

Решение

есть книжка
Объяснение алгоритма на зеркальное отображение двоичного представления числа
1
5 / 5 / 0
Регистрация: 12.09.2020
Сообщений: 21
08.11.2020, 18:10  [ТС] 6
Verevkin, спасибо, а можно название книжки?

Добавлено через 1 минуту
TheCalligrapher, понял, спасибо
0
Злостный нарушитель
9682 / 5243 / 1197
Регистрация: 12.03.2015
Сообщений: 24,708
08.11.2020, 18:18 7
Цитата Сообщение от puulower Посмотреть сообщение
спасибо, а можно название книжки?
генри уоррен. "алгоритмические трюки для программистов".
1
08.11.2020, 18:18
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.11.2020, 18:18
Помогаю со студенческими работами здесь

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

Выход за пределы двоичного представления числа
Приведите, пожалуйста пример выхода за пределы двоичного представления числа. Побитовые операторы...

Зеркальное отображение вводимого числа
Сам новичок в С++, только начал в инсте проходить. Дали задание, а я не могу понять, как его...

Циклический сдвиг двоичного представления числа на К битов влево
Помогите решить Дано короткое целое (2 байта) неотрицательное число. Выполнить циклический...

Установить в ноль с пятого по пятнадцатый биты двоичного представления числа
Напишите программу, в которой необходимо установить в ноль с пятого по пятнадцатый биты в двоичном...

При переводе числа из двоичного представления в шестнадцатеричное используется алгоритм
1. формируется результат из остатков деления аргумента на 10 2. формируется результат из остатков...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Что такое хорошо и что такое плохо, вид сбоку. Индивид и общество - грань не нарушения.
Hrethgir 18.01.2025
В моей личной жизни и времени, я рассуждаю категорией "хуже-лучше", в том плане, когда меня спросили например - "а зачем ты делаешь свой процессор?", то я ответил - "чтобы сделать свою жизнь лучше". . .
Передача по ссылке или по значению в Java?
InfoMaster 18.01.2025
В мире программирования на Java одним из ключевых аспектов, требующих глубокого понимания, является механизм передачи параметров в методы. Этот фундаментальный концепт часто становится источником. . .
Тернарный условный оператор в Python
InfoMaster 18.01.2025
В мире программирования существует множество инструментов и конструкций, позволяющих создавать эффективный и лаконичный код. Одним из таких инструментов является тернарный условный оператор, который. . .
Как удалить неотслеживаемые файлы из рабочего дерева Git
InfoMaster 18.01.2025
В процессе разработки программного обеспечения с использованием системы контроля версий Git часто возникает необходимость в управлении неотслеживаемыми файлами. Неотслеживаемые файлы (untracked. . .
Что делает код if __name__ == "__main__": в Python
InfoMaster 18.01.2025
В мире программирования на Python существует множество важных концепций, и одной из наиболее интересных является конструкция if __name__ == "__main__". Эта специальная конструкция играет ключевую. . .
Как заставить Git забыть об отслеживаемом файле, добавленном в .gitignore
InfoMaster 18.01.2025
В мире разработки программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса, позволяя эффективно отслеживать изменения в коде и управлять ими. Однако. . .
Что означает use strict в JavaScript и для чего используется
InfoMaster 18.01.2025
В мире современной веб-разработки JavaScript играет ключевую роль как один из основных языков программирования. По мере его эволюции возникла необходимость в механизмах, которые помогли бы. . .
Как работать со скрытыми (hidden) элементами в jQuery
InfoMaster 18.01.2025
В современной веб-разработке управление видимостью элементов на странице является одним из ключевых аспектов создания интерактивных пользовательских интерфейсов. jQuery предоставляет мощный набор. . .
Как переключаться между ветками (Branch) с помощью checkout в Git
InfoMaster 18.01.2025
Ветки в Git являются одной из ключевых концепций для управления версионностью кода, позволяя разработчикам эффективно работать в команде и параллельно развивать программные проекты. Каждый новый. . .
Что такое стек и куча, чем они отличаются и где находятся
InfoMaster 18.01.2025
Понимание основных концепций памяти в программировании В мире современного программирования эффективное управление памятью играет ключевую роль в создании производительных и надежных приложений. . . .
Как использовать комментарии в JSON
InfoMaster 18.01.2025
JSON (JavaScript Object Notation) представляет собой легкий и широко используемый формат обмена данными, который стал стандартом де-факто для веб-приложений и программных интерфейсов. При работе с. . .
Как заставить git pull перезаписать локальные файлы в Git
InfoMaster 18.01.2025
Проблема перезаписи локальных файлов в Git При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо синхронизировать локальный репозиторий с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru