หาจำนวนบิตที่ต้องใช้แทนเลขในบाइनนารี (ไม่รวม leading zeros)
ตัวอย่าง: เลข 12 = ไบนารี 1100 → ใช้ 4 บิต
สูตรทางคณิตศาสตร์
จำนวนบิต = floor(log₂(n)) + 1
ใน C# ใช้ Math.Log(val, 2.0)
ตัวอย่างโค้ดเต็ม
using System;
public class Demo {
public static void Main() {
uint val = 12; // 1100 in binary
uint bits = (uint)Math.Log(val, 2.0) + 1;
Console.WriteLine("Total bits: " + bits);
}
}
ผลลัพธ์
Total bits: 4
ข้อควรระวัง: ใช้ได้กับ val > 0 เท่านั้น (log(0) ไม่ได้) สำหรับ 0 ให้จัดการแยก (คือ 1 บิต)
วิธีทางเลือก (Bit shifting):
int count = 0;
while (val > 0) {
val >>= 1;
count++;
}