Здравствуйте, m e, Вы писали:
ME>func для нечетных чисел находит вовсе не предыдущее, а следующее число с равным количеством единиц
ME>ME>f: 11110 -> 11101
ME>func: 00001 -> 00010
ME>
Разве это противоречит условиям "получить ближайшее меньшее или большее число"?
func(1) --> 2
От 1 (0001) ближайшее большее с равным числом бит — это 2 (0010).
ME>для нечетных чисел, похоже, тебе придется поступиться принципами и сделать цикл
ME>ME>0010 0000000000000000000000000011111 -> 0001 1111100000000000000000000000000
ME>
Тут не очень понятно... Какие
x дают неверный
func(x)?
func(2) --> 1 (ближайшее меньшее)
func(31) --> 47 (ближайшее большее)
Даже 0 корректно обрабатывается! О котором даже не думал во время написания. А должен был подумать