мы все знаем трюк n & (n-1), чтобы установить последний 1 бит в 0. Например, 0110 & (0110-1) = 0100. но как об обратном? установить последние 0 на 1? поэтому 0110 становится 0111?как установить последний (самый низкий) 0 бит в 1
Я сделал большой поиск в stackoverflow и в Интернете. результата не проявляется
Не манипулировать бит, но вы можете сделать 'x> = 0? (x - x% 2): (x + x% 2) '. Если x без знака, вы можете просто сделать x x x 2. – Scovetta
поразрядным или с одним: 'x = x | 1' ... извините, см. Мой ответ, я думал, что вы хотите просто установить самый правый бит в один. –