现在有点赶急进度,没时间学习一些算法。
直接提要求了。。
写一个带参方法
传一个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位,否则补码无从谈起。