算法练习(二进制求和)


public class SF {

public String test(String a, String b) {

char[] achars = a.toCharArray();

char[] bchars = b.toCharArray();

//反转后得数组

        char[] A_Revert =new char[achars.length];

char[] B_Revert =new char[bchars.length];

int Aj =0;

int Bj =0;

for (int i = achars.length -1; i >=0; i--) {

A_Revert[Aj] = achars[i];

Aj++;

}

for (int i = bchars.length -1; i >=0; i--) {

B_Revert[Bj] = bchars[i];

Bj++;

}

int AOf10 =0;//A得十进制

        int BOf10 =0;//B得十进制

        for (int i = A_Revert.length -1; i >=0; i--) {

if (A_Revert[i] =='1') {

AOf10 = (int) (AOf10 + Math.pow(2, i));

}

}

for (int i =0; i < B_Revert.length; i++) {

if (B_Revert[i] =='1') {

BOf10 = (int) (BOf10 + Math.pow(2, i));

}

}

int sumOf10 = AOf10 + BOf10;

if (sumOf10 >0) {

String i = _2(sumOf10);

System.out.println(i);

return i;

}

return "0";

}

StringBuilders =new StringBuilder();

//十进制转换二进制

    public String _2(int num) {

if (num>=2){

//不被整除

            if (num %2 !=0) {

s.insert(0,"1");

_2(num /2);

}else {

s.insert(0,"0");

_2(num /2);

}

}else{

s.insert(0,"1");

}

return s.toString();

}

public static void main(String[] args) {

SF S =new SF();

S.test("1010","1011");

//S.test("11", "1");

    }

}

你可能感兴趣的:(算法练习(二进制求和))