Java 如何讲2进制

现在有点赶急进度,没时间学习一些算法。
直接提要求了。。
写一个带参方法
传一个String 类型的二进制如 String b = "0000 0000 0101 0101";
返回其补码(不知道能不能叫补码,有点忘了。就是先取反,在加1)。
急。。

希望对你有用
[code="java"]
public class Calculator {
public static String getResult(String src)
{
char[] c = src.toCharArray();

    for(int i=0;i<c.length;i++)
    {
        if(c[i]=='1')
            c[i]='0';
        else
            c[i]='1';
    }

    boolean highFlag = false;

    for(int i=c.length-1;i>=0;i--)
    {
        if(c[i]=='1'&&i==c.length-1)
        {
            highFlag = true;

            c[i]='0';
        }
        else if(highFlag)
        {
            if(c[i]=='1')
            {
                c[i]='0';
            }
            else
            {
                c[i]='1';
                highFlag = false;
                break;
            }
        }
        else
        {
            c[i]='1';

            break;
        }
    }


    return new String(c);
}

}
[/code]

String 类型的二进制 有没有正负?

[code="java"]
String str = "0000 0000 0101 0101";
int num = 0;
int count = 0;
// 先转10进制
for (int i = str.length() - 1; i >= 0; i--) {
try {
int n = Integer.valueOf(str.substring(i, i+1));
for (int j = 0; j < i - count; j++) n *= i;
num += n;
} catch (NumberFormatException e) {
// 排出中间的空格
count++;
}
}
// 取反
num = ~num;
// 加1
num++;

    System.out.println(Integer.toBinaryString(num));

[/code]

这个,必须先假定是多少位的机器,如16位还是32位,否则补码无从谈起。