【问题标题】:How to understand the functioning of the code about binary number?如何理解有关二进制数的代码的功能?
【发布时间】:2018-08-28 00:54:01
【问题描述】:

菜单

分享

Java 练习:两个二进制数相加

最后更新时间为 2018 年 7 月 5 日 13:07:21(UTC/GMT +8 小时)

Java 基础:练习 17 和解决方案

编写一个Java程序来添加两个二进制数。

在数字电子学和数学中,二进制数是以 2 为基数的数字系统或二进制数字系统表示的数字。该系统仅使用两个符号:通常为 1(一)和 0(零)。

测试数据: 输入第一个二进制数:100010 输入第二个二进制数:110010

图片展示:

示例解决方案:

Java 代码:

import java.util.Scanner;

public class Exercise17 {
    public static void main(String[] args) {
        long binary1, binary2;
        int i = 0, remainder = 0;
        int[] sum = new int[20];
        Scanner in = new Scanner(System.in);
        System.out.print("Input first binary number: ");
        binary1 = in.nextLong();
        System.out.print("Input second binary number: ");
        binary2 = in.nextLong();
        while (binary1 != 0 || binary2 != 0) {
            sum[i++] = (int) ((binary1 % 10 + binary2 % 10 + remainder) % 2);
            remainder = (int) ((binary1 % 10 + binary2 % 10 + remainder) / 2);
            binary1 = binary1 / 10;
            binary2 = binary2 / 10;
        }
        if (remainder != 0) {
            sum[i++] = remainder;
        }
        --i;
        System.out.print("Sum of two binary numbers: ");
        while (i >= 0) {
            System.out.print(sum[i--]);
        }
        System.out.print("\n");
    }
}

【问题讨论】:

标签: java


【解决方案1】:

该程序似乎将在控制台上运行。因此,用户已经可以在控制台上提供输入:

示例:> myProgram.java 00110000 00010000

(记住:你必须先用 javac 编译你的程序)

您可以简单地使用 args[ 0 ] 和 args[ 1 ] 访问给定的数字

您的方法 - 使用“long”作为数据类型 - 可能效果不佳,因为 Scanner 需要一些 long 类型 - String 可能是一个选项作为输入类型,之后将对其进行解析。

这里有一个 reference (to the code below) of 已标记为重复的同一问题。通过使用这些给定的方法,您将很快完成您的任务。 如果不允许你使用这些,那么你将不得不考虑二进制系统以及二进制系统中加法的工作原理——最终,将这些想法转化为代码。:

//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));
}

这里是先前链接的问题所引用的相同问题,因为它已重复: many answers

【讨论】:

    猜你喜欢
    • 2016-01-17
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2013-03-15
    • 1970-01-01
    相关资源
    最近更新 更多