在C語言中,可以使用lg
函數(shù)來表示一個數(shù)的二進(jìn)制位數(shù)減1。一種常見的實(shí)現(xiàn)方式如下:
int lg(int n) {
int count = 0; // 計(jì)數(shù)器,記錄二進(jìn)制位數(shù)減1
while (n > 1) { // 當(dāng)n大于1時,繼續(xù)右移
n >>= 1; // 右移一位
count++; // 計(jì)數(shù)器加1
}
return count; // 返回二進(jìn)制位數(shù)減1
}
這個函數(shù)的原理是每次將n
右移一位,同時計(jì)數(shù)器加1,直到n
不大于1為止。最終返回的就是n
的二進(jìn)制位數(shù)減1。
例如,如果調(diào)用lg(8)
,由于二進(jìn)制表示為1000
,共有4位,因此函數(shù)返回3
。