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を返します。