2


1

我给出一种算法,看看谁能有办法修改,或者提供更高效的算法,把一个整数以二进制形式输出。

char* ToBinary(int src) 
{ 
    //By Rock 
    //2008-09-29 
    #define BitDig(n) (int)(log((double)n)/log(2.0)) 
    static char des[]="00000000000000000000000000000000"; 
    int tmp=src,sto=src,index=0,highest=BitDig(src); 
    while(index<highest) 
    { 
        tmp=sto&-sto; 
        sto-=tmp; 
        index=BitDig(tmp); 
        *(des+0x1F-index)='1'; 
    } 
    return des; 
}
垃圾帖?
提问于2009-02-15 16:50:32
120 1 5
添加评论
1


第一时间想到的,不知道怎么样,大家看看吧!其实还可以把i的循环和mask的移位放在一起,减少代码。

string int2str(int num){

  int mask = 0x01;
  string str; // 假设string有insert(char, pos) 的函数

 for(int i = 0;i<31;i++){
      int val = num & mask;
      if(val) str.insert(1, 0);
      else str.insert(0,0);
      mask = mask << 1;
 }
 return str;

}

永久链接 | 垃圾帖?
回答于2009-04-02 15:04:13
60 2
添加评论
1


// by Mark
// 2009-04-04
char * ToBinary(int src)
{
    static char des[] = "00000000000000000000000000000000";
    char * ptr = des;
    unsigned int mask;

    for (mask = 0x80000000; mask; mask >>= 1)
        *ptr++ = '0' + !(!(src & mask));
    return des;
}
永久链接 | 垃圾帖?
回答于2009-04-04 16:56:01
60 1
添加评论
1


char* ToBinary(int src)
 {
  /* by JohnHam 04-23*/
  static char res[] = "00000000000000000000000000000000";
  char* p = res+strlen(res)-1;
  unsigned int temp = (unsigned int)src;

 while(temp)
 {
 *p=(0x01 & temp)?'1':'0';
 temp>>=1;
 p--;
 }
return res;

}

永久链接 | 垃圾帖?
回答于2009-04-23 06:05:09
60 2
添加评论
0


Python3.0之前的版本也没有转换到二进制这个函数,通常这么实现的:

def bin(x):
    """x is a positive int type"""
    result = ''
    while x > 0:
            result = str(x % 2) + result
            x /= 2  #or: x = x >> 1
    return result

效率可能不高,在3.0中据说有了内置的bin函数,下次查一下源码怎么实现的。

永久链接 | 垃圾帖?
回答于2009-02-15 19:30:54
348 2 10
添加评论
0


计算一次log的时间足够分段查表NNN次来获取二进制表示了

永久链接 | 垃圾帖?
回答于2009-03-30 08:25:13
60 1
添加评论




Made with Django.

当前版本: R-0127-20090523

cc-wiki