Вход
Наше всё
Теги
codebook
无线电组件
Поиск
Опросы
Закон
Воскресенье
6 апреля
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
PLD, FPGA, DSP
AVR
PIC
ARM, RISC-V
Технологии
Кибернетика, автоматика, протоколы
Схемы, платы, компоненты
Средства и методы разработки
152753
Топик полностью
Сергей Борщ
(04.04.2009 13:04, просмотров: 240)
ответил
Сергей Борщ
на
Решение найдено. Спасибо коллегам с Электроникса, которые напрягли математиков на форуме НГУ :) Если кому интересно - по ссылке.
Развернул рекурсию. Это какой же склад ума надо уметь, чтобы писать рекурсию прямо из головы?
uint32_t decode2(uint32_t y, uint_fast8_t k) { if(y < 2) return y; uint32_t x = y & 1; for(uint32_t Mask = (1<<1) | (1<<0); Mask < 1ULL << k; Mask = (Mask << 1) | (1 << 0) ) { uint32_t n = ((x * (x + 1)) >> 1) & Mask; if( n != (y & Mask) ) x ^= Mask; } return x; }
Ответить
Вполне обычный. Мы тут все забыли, как складывать лист бумаги :). А оно вон как выходит ->
-
Рэйлвэй Каген
(04.04.2009 14:45
,
картинка
)