Sunny-117 / js-challenges

✨✨✨ Challenge your JavaScript programming limits step by step

Home Page:https://juejin.cn/column/7244788137410560055

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

将十进制数字转为二进制数字字符串

Sunny-117 opened this issue · comments

将十进制数字转为二进制数字字符串

使用内置方法

const x = 10
console.log(x.toString(2))  // "1010"

手动实现

let x = 10
let str = ''
while (x) {
  str += x & 1 ? '1' : '0'
  x >>= 1
}
console.log(str.split('').reverse().join(''))  // "1010"
commented
function transform(num){
    let res = '';
    while(num){
        let val = num % 2;
        num = Math.floor(num / 2);
        res = val + res;
    }
    return res;
}
console.log(transform(10));

数学方法

function transform(num){
    if(num === 0) return "0";
    let res = "";
    while(!(Object.is(num, +0) || Object.is(num, -0))){
        res = ((num & 1) === 1 ? "1" : "0") + res;
        num >>= 1;
    }
    return res;
}
function decimalToBinary(decimalNumber) {
    let binary = '';
    while(decimalNumber > 0) {
        binary = (decimalNumber % 2) + binary;
        decimalNumber = Math.floor(decimalNumber / 2);
    }
    return binary;
}

console.log(decimalToBinary(10)); // 输出 "1010"

function transfrom (number) {
let rs = '';
let num = number;
while(num) {
let cur = num%2;
num = Math.floor(num/2);
rs = cur + '' + rs;
}
return rs;
}