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

来源:互联网 发布:查理斯特亚斯 知乎 编辑:程序博客网 时间:2024/06/16 17:16

对于正整数而言:

  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(curr.ToString().Substring(0, 1));
int i = Math.Abs(386792);while(i >= 10)    i /= 10;
int firstDigit = (int)(Value.ToString()[0]) - 48;
int start = number == 0 ? 0 : number / (int) Math.Pow(10,Math.Floor(Math.Log10(Math.Abs(number))));
int temp = i;while (temp >= 10){    temp /= 10;}
 public int GetFirstDigit(int number)    {        number = Math.Abs(number); <- makes sure you really get the digit!        if (number < 10)        {            return number;        }        return GetFirstDigit((number - (number % 10)) / 10);    }


0 0
原创粉丝点击