这个代码对2的补码是否正确?

时间:2013-10-25 15:45:27

标签: java twos-complement ones-complement

再次做作业时间。 我必须创建一个程序来打印二进制数的1和2的补码。 到目前为止,2s恭维是否正确?我应该允许输入,然后在2之前计算1的赞美吗?

import java.util.Scanner;
public class BitWiseComplement {
    public static void main (String [] args) {

        String a = "1";
        String b = "0"; 

        Scanner reader = new Scanner(System.in);
        String binary; 
        String binary2; 

        System.out.println("Please enter your binary number:");
        binary = reader.nextLine(); 

        binary2 = binary.replaceAll(a, b);

        System.out.println(binary2);
        }
    }

2 个答案:

答案 0 :(得分:0)

对于1的整数补码,您可以使用Integer类库方法toBinaryString()将整数转换为二进制,然后运行循环并将1转换为0,反之亦然。

void firstcomplement(int num)
{
    String binary=Integer.tobinaryString(num);
    String complement="";
    for(int i=0; i<binary.length(); i++)
    {
         if(binary.charAt(i)=='0')
             complement[i] += "1";
         if(binary.charAt(i)=='1')
             complement[i] += "0";
    }

 }

答案 1 :(得分:-1)

尝试:

String s3=String.format("%4s", 
              Integer.toBinaryString(i1))
                     .replace(' ', '0')
                     .replace('0' ,'a')
                     .replace('1' ,'0')
                     .replace('a' ,'1');

然后添加一个。