Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

โปรแกรม C# นับจำนวนบิตทั้งหมดในเลข

หาจำนวนบิตที่ต้องใช้แทนเลขในบाइनนารี (ไม่รวม 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++;
}