两个二进制的相加可以用位运算,当一个为一 一个为零时 两位相加就为一 两位都是一的话 就往前进一 都为零的话 结果为零
先将 两个二进制长度相同 短的话在前面补零
然后把两个字符串改为数组
当两个都为一的话 需要往前一位进一 当前一位也为一的话还需要往前进一
创建一个 函数 当两位都是一的话 进入函数判断下一个是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,"")//将数组转为字符串
};