24 is the answer
Last statement is right shift operator which means divide by 2 and the condition is bitwise AND with 1 which keep on resulting zero (!0=1 condition true) till the number is greater than 1. At 1 (1&1=1 condition becomes false) you can run the code for small example like 2^3 and printf will be executed 3 times.