Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
3 / 3 / 0
Регистрация: 09.11.2022
Сообщений: 11

Обнулить крайнюю справа последовательность единичных битов зад. числа (пример 11001100→10000000)

15.11.2022, 22:09. Показов 858. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Обнулить крайнюю справа непрерывную последовательность единичных битов заданного числа (пример 11001100→10000000). На основе этого проверить являеться ли данное число (положительной) разностью степеней 2-ки.

Помогите сделать на базовом уровне (1-го курса) пожалуйста.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.11.2022, 22:09
Ответы с готовыми решениями:

Заполнить крайнюю справа непрерывную последовательность нулевых битов заданного числа единицами
заполнить крайнюю справа непрерывную последовательность нулевых битов заданного числа единицами. Например: (00100100->00100111).

Посчитать количество единичных битов числа
1. Дано натуральное число меньше 256. Посчитать количество его единичных битов. Например, если дано число 9, запись которого в двоичной...

Написать функцию, которая для заданного числа Х вычисляет количество единичных битов в этом числе
Написать функцию, которая для заданного числа Х вычисляет количество единичных битов в этом числе, используя побитовые операции и функции...

6
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
15.11.2022, 22:33
Лучший ответ Сообщение было отмечено CyberGrind как решение

Решение

Pascal
1
2
3
4
5
## var bits := ReadString;
var trimmed := bits.TrimEnd('0').TrimEnd('1');
if trimmed.Length=0 then
  $'0: Разница степеней двойки'.Println else
  trimmed.PadRight(bits.Length, '0').Println;
1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
15.11.2022, 23:10
Sun Serega,
это строковые операции, а не битовая арифметика
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
15.11.2022, 23:14
А где в задании сказано про арифметику)
0
Модератор
10440 / 5729 / 3405
Регистрация: 17.08.2012
Сообщений: 17,438
16.11.2022, 03:13
В задании есть разночтение: если верить словам, то пример должен выглядеть так: 11001100→11000000. Будем верить словам.

Предлагаю так:
11001100
заполнить единицами непрерывную последовательность нулей справа n := n or (n - 1):
11001111
выделить из полученного числа первый ноль mask := not n and -(not n):
00010000
вычесть из этого дела единицу mask -= 1
00001111
и, наконец, n := n xor mask
11000000

Огромное спасибо Mikl___ за способ выделения первого нулевого бита справа:
КРАЙНИЙ СПРАВА НУЛЕВОЙ БИТ МОЖНО ВЫДЕЛИТЬ ТАК:
1) X = 01011100011
X+1 = 01011100100
not X = 10100011100
Y = (not X) and (X+1) = 00000000100
2) если использовать закон Моргана, тогда Y = not(X or not(X+1))
3) если вспомнить что -Х = not(X) +1 и X = not(not(X)), тогда Y = (not X) and (-(not X))
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
16.11.2022, 07:54
3) если вспомнить что -Х = not(X) +1 и X = not(not(X)), тогда Y = (not X) and (-(not X))
Это ведь то же самое что тут
Y = (not X) and (X+1) = 00000000100
Но одну операцию (X+1) заменили на 2: -(not X)
not X уже есть в выражении, поэтому на производительность, по идее, не должно влиять... Но зачем?
1
Модератор
10440 / 5729 / 3405
Регистрация: 17.08.2012
Сообщений: 17,438
17.11.2022, 01:23
Да, пожалуй, "усовершенствованный" вариант ещё и помедленнее будет... Получается, not n and (n + 1) будет лучше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.11.2022, 01:23
Помогаю со студенческими работами здесь

Функции. побитовые операции. Написать функцию, которая для заданного целого числа Х вычисляет количество единичных битов в этом числе
Здравствуйте, уважаемые мастера программирования. Нуждаюсь в вашей помощи. Написать функцию, которая для заданного целого числа Х...

Количество единичных битов
Название Размерность Тип D 16 вход C 5 выход На входе D двоичное...

Сосчитать количество единичных битов в AX
Сосчитать количество единичных битов в AX. Результат поместить в BX. Нужно сделать этот как-нибудь проще и без использования доп. функции...

AHDL. Число единичных битов
Подскажите как это реализовать программно на языке AHDL. Добавлено через 2 часа 35 минут Уже сам разобрался)) SUBDESIGN id ( ...

Сосчитать количество единичных битов в АХ
помогите решить.... Сосчитать количество единичных битов в АХ. Результат поместить в ВХ.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru