前两天的面试题。
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);
}
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);
}