首页 > 解决方案 > 如何理解有关二进制数的代码的功能?

问题描述

菜单

分享

</p>

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

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

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

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

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

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

图片展示:

</p>

样品解决方案:

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

解决方案


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

示例: > myProgram.java 00110000 00010000

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

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

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

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

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

在这里,先前链接的问题已引用了相同的问题,因为它已重复: 许多答案


推荐阅读