Этот метод, безусловно, будет работать. Другим возможным способом было бы исключить половину возможностей каждый раз. Допустим, у вас есть 8-битное число: 00010000
Побитово и ваше число, где половина битов равна единице, а другая половина равна нулю, скажем, 00001111.
00010000 & 00001111 = 00000000
Теперь вы знаете, что это не первые четыре бита. Делайте это несколько раз, пока не получите 0:
00010000 и 00110000 = 00010000
А затем сузьте его до одного возможного бита, равного 1, который является вашей степенью двойки.