【问题标题】:how to add binary numbers [duplicate]如何添加二进制数[重复]
【发布时间】:2017-02-08 04:58:05
【问题描述】:

我这里有方法。一个将十进制数转换为 8 位二进制数。我需要添加另一种将两个二进制数相加的方法。例如 01000000 (64) + 00000010(2) = 01000010(66)。然后对于第二种方法,例如 34 + 56 等于 90,然后是 01011010 的二进制等值。所以我需要一个执行该方法的方法。因此,如果用户被要求输入两个十进制数字,它将取两个并将它们相加。以二进制(8位)输出答案

这会将十进制转换为二进制,我需要一些如何让它添加两个二进制数

public String toBinary(int number)
{
    String binary = " ";
    boolean isNeg = number < 0;
    if(isNeg)
    {
        number += 1;
    }
    while (number > 0 || number < 0) {
        int rem = number%2; 
        if(rem == -1)
        {
            rem = rem * -1;
        }
        binary = rem + binary;
        number /= 2; 

    } 
    while(binary.length() <= 8)
    {
        binary = "0" + binary;
    }

    if(isNeg)
    {
        StringBuffer buff = new StringBuffer("");
        for(int i =0; i < 8; i++)
        {
            char store = binary.charAt(i);  
            if(store == '0')
            {
                buff.append("1");

            }else
            {
                buff.append("0");
            }

        }  

        binary = buff.toString();
    }     

    return binary;
}

将二进制转换为十进制我需要将其修复为适用于负二进制(singed)然后能够添加两个二进制数

public int toDecimal(int number)
{
    int decimal = 0;
    int p = 0;
    while(true)
    {
        if(number ==0)
        {
            break;
        }else if(number > 0) {
            int temp = number%10;
            decimal +=temp*Math.pow(2,p);
            number = number/10;
            p++;
        }



    }
    return decimal;

}}

【问题讨论】:

  • 二进制 0 + 0 = 0; 0 + 1 = 1;和 1 + 1 = 0 进位 1;
  • 一旦你有了两个二进制字符串。使用 Integer.parse(yourString.Charat(index));添加相同的索引。不要忘记在需要时携带一个。从每个添加构建一个结果字符串。

标签: java binary


【解决方案1】:

首先,很抱歉告诉您,但是...这两种方法都已经存在,但是如果您尝试编写它们,那就太好了

//The method to convert from int to Binary already exists : Integer.toBinaryString(int i)
System.out.println(toBinary(16)+" <=> "+Integer.toBinaryString(16));
//The method to convert from Binary to int (with String) too : Integer.parseInt(String s,2)
System.out.println(toDecimal(00010000)+" <=> "+Integer.parseInt(String.valueOf(10000),2));

对于“添加”方法,只需使用其他 2 种方法:

public String addBinary(int a, int b){
        return toBinary(toDecimal(a)+toDecimal(b));
}

对于你 toDecimal :永远不要使用 while(true) 这是非常冒险的,并在循环之外实例化你的变量(这里是 else if),因为你每次都在创建一个新变量:使用内存

【讨论】:

  • 我猜这是一个家庭作业,所以 OP 将无法使用 Integer.toBinaryString 和类似的。
  • addBinary 方法也是如此。您将无法使用 Java 加法运算符来添加多位数字,因为这会破坏赋值的目的。
  • 是的,我不能使用其中任何一个
猜你喜欢
  • 1970-01-01
  • 2012-01-22
  • 2021-07-09
  • 2014-09-26
  • 1970-01-01
  • 2017-03-14
  • 2022-01-04
  • 2018-03-31
  • 2015-02-01
相关资源
最近更新 更多