获取一个数字的最高位的几种算法。

时间:2025-02-06 20:27:59

对于正整数而言:

  1. 二进制的话,可以通过位运算和二分快速确定一个整数的前导0个数。
  2. 十进制,可以把整数打印到一个字符数组里:
ssprintf(str,"%d",a);
然后取第一个元素:
printf("%c",str[0]);
这样虽然输出也比较费时,但相对除法来说还是快了些。

对小于100000000于整数而言:

if(x/100000000) x/=100000000;
if(x/10000) x/=10000;
if(x/100) x/=100;
if(x/10) x/=10;
return x;

int start = Convert.ToInt32(().Substring(0, 1));
int i = (386792);
while(i >= 10)
    i /= 10;
int firstDigit = (int)(()[0]) - 48;
int start = number == 0 ? 0 : number / (int) (10,(Math.Log10((number))));
int temp = i;
while (temp >= 10)
{
    temp /= 10;
}
 public int GetFirstDigit(int number)
    {
        number = (number); <- makes sure you really get the digit!

        if (number < 10)
        {
            return number;
        }
        return GetFirstDigit((number - (number % 10)) / 10);
    }