|
67 / 42 / 30
Регистрация: 26.03.2019
Сообщений: 269
|
||||||
Записать поверх биты из одного числа в другое26.07.2021, 19:04. Показов 7099. Ответов 73
Метки нет (Все метки)
Скопировать первые
end - start + 1 битов из A и записать поверх в B, начиная с позиции start по позицию end. Разрешается использовать только побитовые операцииПримеры работы функции:
0
|
||||||
| 26.07.2021, 19:04 | |
|
Ответы с готовыми решениями:
73
Как поменять биты из одного числа в другое на определённом отрезке, используя только битовые операции? Очень большие числа: узнать, есть ли остаток от деления одного числа на другое
|
|
|
|||
| 28.07.2021, 10:35 | |||
(int A, int B, int Start, int End) чем (int B, int A, int Start, int End).И по сути получилось так, что и задание написано неверно, и функция делает непонятно что. Скрестив одно с другим мы нарвались на такие вот исследования. Добавлено через 1 минуту
0
|
|||
|
67 / 42 / 30
Регистрация: 26.03.2019
Сообщений: 269
|
|||||||
| 28.07.2021, 10:58 [ТС] | |||||||
0
|
|||||||
|
67 / 42 / 30
Регистрация: 26.03.2019
Сообщений: 269
|
|
| 28.07.2021, 20:33 [ТС] | |
|
wizard41,
В воздухе завис вопрос, как отрефакторить функцию на работу с int. Все оказалось не так просто
0
|
|
|
|
|||||||
| 28.07.2021, 20:40 | |||||||
|
Добавлено через 56 секунд
0
|
|||||||
|
67 / 42 / 30
Регистрация: 26.03.2019
Сообщений: 269
|
||
| 29.07.2021, 07:07 [ТС] | ||
Foo(A: -1, B: 0, i: 31, j: 31) = 2147483647 проходит. А для Foo(554216104, 15, 0, 31) = 15 нет
0
|
||
|
|
||
| 29.07.2021, 10:24 | ||
|
0
|
||
|
67 / 42 / 30
Регистрация: 26.03.2019
Сообщений: 269
|
||||||||||||
| 29.07.2021, 10:48 [ТС] | ||||||||||||
Foo(554216104, 15, 0, 31) копирование от 0 до 31 бита должно сделать B == A. Ответ 15 верен.
0
|
||||||||||||
|
|
||
| 29.07.2021, 11:12 | ||
Foo(554216104, 15, 0, 31) = 15, остальные два примера перестанут работать (т.е. будут возвращать не те значения, которые "нужны"). О чем это говорит?
0
|
||
|
67 / 42 / 30
Регистрация: 26.03.2019
Сообщений: 269
|
|
| 29.07.2021, 11:13 [ТС] | |
|
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||
| 29.07.2021, 11:30 | |||
|
В целочисленных типах ничего не "зарезервировано". unchecked.
1
|
|||
|
|
|||
| 29.07.2021, 11:35 | |||
|
Добавлено через 5 минут
0
|
|||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 29.07.2021, 11:38 | ||
|
Но смена знака вполне возможна — для чего и стоит использовать unchecked.
0
|
||
|
67 / 42 / 30
Регистрация: 26.03.2019
Сообщений: 269
|
||
| 29.07.2021, 11:48 [ТС] | ||
15 = 0000_0000_0000_0000_0000_0000_0000_1111В результате копирования от 0 до 31 бита: Пройдем пошагово по функции По функции вроде все так, как надо. Но на практике ответ выходит другой
0
|
||
|
67 / 42 / 30
Регистрация: 26.03.2019
Сообщений: 269
|
||
| 29.07.2021, 12:24 [ТС] | ||
int.MaxValue = 1111_1111_1111_1111_1111_1111_1111_1111.Прошелся вновь по функции однако результат не изменился. Маска не имеет единичных битов, тогда B & mask аналогично, a A << start не меняет значения, т.к. start = 0. Итого (B & mask) | (A << start) => 15
0
|
||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 29.07.2021, 12:37 | ||
|
1111_1111_1111_1111_1111_1111_1111_11112 = -110
0
|
||
|
67 / 42 / 30
Регистрация: 26.03.2019
Сообщений: 269
|
|||||
| 29.07.2021, 12:42 [ТС] | |||||
|
В таком случае вопрос остается прежним.
0
|
|||||
| 29.07.2021, 12:42 | |
|
Из одного числа вычесть другое
MikroPascal for AVR - по "алиасам", биты одного байта(переменной) назначить на биты других байтов(портов, пинов) Копирование битов из одного числа в другое
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|