两个面试题(atoi, lgn)

来源:互联网 发布:网络推广网站 编辑:程序博客网 时间:2024/05/16 10:51
前两天的面试题。

atoi:
int atoi(char* s){ int index = 0; int sign = 1; int ret = 0; if(s[index] == '-'){ sign = -1; index++; } while(s[index++] != '/0') ret = ret * 10 + s[index] - 48; return ret }

给定整数n,求最接近n的2的幂。
根据n的二进制表示来做,即所求的数是保留n的最高为1的位,将其余的位清0。
java标准库的函数如下:
    public static int highestOneBit(int i) {
        // HD, Figure 3-1
        i |= (i >>  1);
        i |= (i >>  2);
        i |= (i >>  4);
        i |= (i >>  8);
        i |= (i >> 16);
        return i - (i >>> 1);
    }
原创粉丝点击