二进制可以轻松解决的问题
给定一个数,算出n1+n2+n3+… = X中n1 n2 n3 n4的值
在二进制表达式中,比如二进制的1010表示十进制的10
二进制中的对应位置 1 0 1 0
十进制中表示的数 8 2
即8+2 = 10
又比如二进制的 11111 表示十进制的 31
二进制中的对应位置 1 1 1 1 1
十进制中表示的数 16 8 4 2 1
即16+8+4+2+1 =31
所以知道二进制中每一位置对应的数字即可算出对应的n1 n2 n3 ...
但是局限性在于 只能算出这一种情况 其他很多情况需要根据此种情况一次推算出(比如分别加上和为0的几个数,并分配给几个数进行计算)
二分法与二进制的结合
场景:在一个字符的左侧补某字符,使得长度变为length。
function leftPad(str, length, ch){
if(!ch && ch!==0){
ch= " ";
}
let len = length- str.length;
let total = '';
while(len){
if(len%2 ==1){
total += ch;
}
if(len ==1){
return total + str;
}
ch += ch;
len = parseInt(len/2);
}
}
console.log(leftPad('hello', 12, '0'))