二进制与二分法的关系(某些场景)

二进制可以轻松解决的问题

给定一个数,算出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'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值