如何将其补码转换为2的补码?

时间:2016-02-04 09:19:07

标签: java string

  

给定: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();

        }

1 个答案:

答案 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);
    }
}

这适用于零。