С вашим " в моей голове, никакого кодирования «разъяснения», this answer подводит итог довольно хорошо. Пока неясно, хотите ли вы узнать, какие биты заданы из двоичного числа или десятичного числа, я буду считать последнее, поскольку просмотр, если бит задан из двоичного числа, тривиален. Я хотел бы добавить несколько вещей, чтобы ответ Бориса:
Немного K из числа B устанавливается, если его значение равно 1, это означает, что вам нужно добавить мощности K от 2 до вашей суммы в порядке получить B. Имейте в виду, что в двоичной записи каждое положительное целое представляется как сумма степеней 2. Никакая степень 2 не может быть представлена как сумма меньших степеней 2, что делает бинарное представление числа уникальным.
Вы можете сразу узнать, установлен ли первый бит, поскольку он определяет четность (0-четный, 1-нечетный).
Вы можете узнать наибольший бит бит, найдя максимальную мощность 2, которая меньше, чем число, которое вы анализируете. Никакие биты за пределами этого не будут установлены (если бы они были, они были бы больше, чем сила 2, которую вы нашли, тем самым лишив ее максимальной).
Отныне вы в основном делаете, как сказал вам Борис. Это линейная проверка на каждую силу двух.
Я думаю, что вы можете прочитать о this, чтобы иметь лучшее понимание того, что вы просите.
можно выполнить немного и операции с соответствующими силами 2. –