我刚刚接受了一道面试题,需要获取整数的二进制表示。这是我应该知道如何做的事情...例如,5的二进制表示为101,步骤大致如下:
// 5 % 2 = 1
// 5 / 2 = 2
// result = 1;
// 2 % 2 = 0
// 2 / 2 = 1
// result = 10
// 1 % 2 = 1
// 1 / 2 = 0
// result = 101
停止条件是当 ~~(1/2) === 0
时。
所以我有这个:
const getBinary = (v) => {
let remainder, binary = 1;
while (true) {
remainder = v % 2;
v = ~~(v / 2);
if (v === 0) {
return binary;
}
if (remainder === 0) {
binary = binary * 10 + 1;
}
else {
binary = binary * 10;
}
}
};
console.log(getBinary(5));
这样可以正常运行,但是binary
变量被初始化为1。有没有办法改进,使其能够处理负数或者当0作为函数参数传递时仍然有效?
-
符号? - ibrahim mahrir