二进制加法的JavaScript实现

二进制字符串的加法,和十进制的大整数加法很相似。

只不过一个是逢21,另一个是逢101

所以,实现起来也比较简单。

不过,一般要考虑,如果字符串以0开头的情况,截取掉。

我的实现,没有考虑这点。

/**
 * @param {string} a
 * @param {string} b
 * @return {string}
 */
var addBinary = function(a, b) {
    
    var res = [];
	//是否进位
    var addOne = 0;
    
	//字符串对齐
    while(a.length < b.length){
        a = "0" + a;
    }
    
    while(b.length < a.length){
        b = "0" + b;
    }
    //从低位到高位,依次相加
    for(var i=a.length-1;i>=0;i--){
        var curA = +a.charAt(i);
        var curB = +b.charAt(i);
        var sum = curA + curB + addOne;
        //逢2进位
        if(sum >= 2){
            res[i] = sum - 2;
            addOne = 1;
        }
        else{
            res[i] = sum;
            addOne = 0;
        }
    }
    
    if(addOne > 0){
        res.unshift(1);
    }
    //一次性拼接
    return res.join("");
};


猜你喜欢

转载自blog.csdn.net/esir82/article/details/79013629