# 2022q1 Homework4 (quiz4) contributed by < `a1234565` > ## 測驗 1 延伸第 3 週測驗題的測驗 7,已知輸入必為大於 0 的數值 (即 x > 0),以下程式碼可計算 `⌈log2(x)⌉` ,也就是 ceil 和 log2 的組合並轉型為整數: ```c int ceil_log2(uint32_t x) { uint32_t r, shift; x--; r = (x > 0xFFFF) << 4; //0xFFFF = 0x0000FFFF x >>= r; shift = (x > 0xFF) << 3; x >>= shift; r |= shift; shift = (x > 0xF) << 2; x >>= shift; r |= shift; shift = (x > 0x3) << 1; x >>= shift; // r|= shift //shift = (x > 0x1) << 0; //r |= shift; return (EXP1) + 1; } ```