У меня только что был вопрос на собеседовании, где мне нужно получить двоичное представление целого числа, это то, что я должен знать, как это сделать. Например, 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 передается в качестве аргумента функции?