1. 程式人生 > >二進位制加法的JavaScript實現

二進位制加法的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("");
};