给定:String的形式的二进制数。将其转换为2的补码形式
示例:
输入:
00000101
输出:
11111011
我知道如何将二进制数转换为1的赞美形式。但我无法转换为2补充形式。
例如:
GivenString:111
1s Compliment 000
如何编码1:在1的补码中添加'1'和1 + 1 = 1?
MyCodeFor 1s赞美:
public static String complimentDecimal(String strnew)
{
//Replace the 0s with 1s and 1s with 0s
StringBuilder sb = new StringBuilder();
for(int j=0;j<strnew.length();j++)
{
if(strnew.charAt(j)=='0')
sb.append("1");
else if(strnew.charAt(j)=='1')
sb.append("0");
}
String s1 = sb.toString();
}
答案 0 :(得分:2)
使用Integer.parseInt(<String value>, 2)
来将一个人的赞美转换为十进制形式
您将获得二进制数的十进制形式。添加一个并将数字转换回二进制。
public static String complimentDecimal(String strnew)
{
int s2=Integer.parseInt(strnew,2);
if (s2==0)
{
String s4="1";
for(int j=0;j<strnew.length();j++)
{
s4+="0";
}
return s4;
}
else{
StringBuilder sb = new StringBuilder();
for(int j=0;j<strnew.length();j++)
{
if(strnew.charAt(j)=='0')
sb.append("1");
else if(strnew.charAt(j)=='1')
sb.append("0");
}
String s1 = sb.toString();
int s = Integer.parseInt(s1, 2);//parse int radix = 2 for binary
s++; //increment by one
return Integer.toBinaryString(s);
}
}
这适用于零。