java - 如何理解有关二进制数的代码的功能?
问题描述
菜单
分享
</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");
}
}
解决方案
该程序似乎将在控制台上运行。因此,用户已经可以在控制台上提供输入:
示例: > 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));
}
在这里,先前链接的问题已引用了相同的问题,因为它已重复: 许多答案
推荐阅读
- javascript - Dynamically cell rendering in ag-grid for polymer 3
- c# - 统一 C#。如何将实例化对象链接到寻路脚本以及如何使游戏对象移动到节点列表?
- excel - 使用 vlookup 查找匹配的字符串并报告来自相邻单元格的值
- javascript - Is it possible to add show password functionality in login form of sylius? This script is not working
- python - 备份脚本不会遍历文件夹中的文件
- apache-spark - Play Cassandra Netty Server null pointer exception
- python - Why do I need a shell script to run a python script inside the container?
- webforms - 在 WebForms 中使用 Open ID 或 Identity Server4 进行单点登录
- swift - 返回从 HTTP 请求中检索到的值的方法
- ansible - Ansible command using variable input fails to execute