两个二进制的相加

时间:2025-01-18 17:08:38

两个二进制的相加可以用位运算,当一个为一 一个为零时 两位相加就为一  两位都是一的话 就往前进一  都为零的话  结果为零

先将 两个二进制长度相同 短的话在前面补零 

然后把两个字符串改为数组

 当两个都为一的话 需要往前一位进一  当前一位也为一的话还需要往前进一

创建一个  函数 当两位都是一的话  进入函数判断下一个是1还是0 如果是1, 将1改为零直到遇见0,把0改为1.当函数是0时将0改为一

最后再将数组改为字符串

代码:

var addBinary = function(a, b) {
   // 补零区域
    if(>){
        var num = 
        for(var i = 0 ;i<num;i++){
            b="0"+b
        }
    }else{
        var num = 
        for(var i = 0 ;i<num;i++){
            a="0"+a
        }
    }
// 当两位都是一的话进入的函数
    function fn(str,ind){
           for(var i =ind;i>=0;i--){
               if(str[i-1]==1){
                   str[i-1]=0
               }else{ 
                   if(i-1<0){
                       (1)
                   }else{
                       str[i-1]=1
                   }
                   
                  
                   break
               }
           }
       
           return str
    }
    // return  b
//进行位运算
    var str = []
    for(var j=0;j<;j++){
        (a[j])
    }
    var num1 = -1
    var num3 = -1
    for(var i=num3 ;i>=0;i--){

        if(str[i]*1+b[num1]*1>1){
            str[i]=0
            if (str[i-1]==0) {
                str[i-1]=1
            }else{
                str=  fn(str,i)//调用函数
                if(num3<-1){
                    i++
                }
            }
        }else if(str[i]==1||b[num1]==1){
            str[i]=1
            
        }else{
            str[i]=0

        }
        num1--
    }return ().replace(/,/g,"")//将数组转为字符串
};