C言語のlg関数表記法

C言語で、lg関数は、数値の2進数の桁数マイナス1を表すのに使われます。一般的な実装方法は次のとおりです。

int lg(int n) {
    int count = 0;  // 计数器,记录二进制位数减1
    while (n > 1) { // 当n大于1时,继续右移
        n >>= 1;    // 右移一位
        count++;    // 计数器加1
    }
    return count;   // 返回二进制位数减1
}

この関数の原理は、nを右に1ビットシフトするごとにカウンタに1を加算し、最終的にnが1以下になるまで繰り返すことです。最終的に返されるのは、nの2進数におけるビット数から1を減算した値です。

例えば、lg(8)を呼び出した場合、2進数表記が1000なので、4桁あるため、関数は3を返します。

bannerAds