两个面试题(atoi, lgn)

前两天的面试题。

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);
    }
阅读更多
文章标签: 面试 java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭