Java两个二进制数求和

1.简介


在本教程中,您将学习一个Java程序,了解如何对两个二进制数求和。二进制数仅以“ 0”和“ 1”表示。没有其他数字。如果一个数字的数字不为0和1,则它不是二进制数字。我在互联网上看到很多例子,它们都只显示程序,但给出了解释。在这里,它与按位与运算符不同。它看起来像&运算符,但不是。您将在本文中得到澄清。不要跳过任何内容,也不要直接看到代码。
 

 






通常,这可以通过两种方式完成。首先,我们不使用任何Java API方法,而仅使用交换理论与逻辑设计(STLD)主题中的工程概念,而第二种方法是使用Integer API完成的。

在编写用于加法的程序之前,让我们看一下如何在纸上进行加法,如下图所示:
在Java中添加二进制数

二进制数序列加法如下。

将两个二进制“ 1”(例如1 + 1)相加会产生十进制数字2,但我们应将其转换为二进制数10。这里0是实际的总和,而1是一个进位。
0 + 0将产生0
0 + 1-> 1
1 + 0-> 1

在这里,所有输出均应为二进制数字,并且不允许使用十进制数字。

2.示例算法演练:在Java中添加两个Binay数


以两个二进制数进行演示。

binaryNumber1 = 10101
binaryNumber2 = 10001
进位= 0
 

迭代1:


1010 1
1000 1

进位+
二进制数1的第一个数字+二进制数2的第一个数字0 +1 + 1 = 10(这是一个二进制数),这里是进位+总和的组合。所以在这里进行如下求和。
进位= 1
首位总和= 0
 

迭代2:


101 0 1
100 0 1

进位(来自上一步)+二进制数
1的第二位+二进制数2的第二位1 + 0 + 0 = 01
进位= 0
第二位总和= 1
 

迭代3:


10 1 01
10 0 01

进位(来自上一步)+二进制数
1的第三位+二进制数2的第三位0 +1 + 0 = 01
进位=
第三位总和= 1

 

迭代4:


0 101
0 001

进位(来自上一步)+二进制数1的第四位+二进制数2的第四位
0 + 0 + 0 = 0
进位= 0
第四位总和= 0
 

迭代5:


1 0101
1 0001

进位(来自上一步)+二进制数
1的第五位+二进制数2的第五位0 +1 + 1 = 10
进位= 1
第五位总和= 0

 

输出:


公式: 进位+所有数字总和(第五位数字总和第四位数字总和第三位数字总和第二位数字总和第一位数字总和) 100110


 

3.添加两个二进制数的示例程序

上面的示例值将传递给该程序并产生相同的输出。
 

public class AddBinaryNumbers {

	public static void main(String[] args) {

		// two binary numbers
		long binaryNumber1 = 10101, binaryNumber2 = 10001;

		// i represents the index of the finalSumOutput array.
		int i = 0;

		// carry which is to hold the value of carry.
		int carry = 0;

		// Created int array to hold the output binary number
		int[] finalSumOutput = new int[10];

		while (binaryNumber1 != 0 || binaryNumber2 != 0) {

			finalSumOutput[i++] = (int) (carry + (binaryNumber1 % 10 + binaryNumber2 % 10) % 2);

			carry = (int) ((binaryNumber1 % 10 + binaryNumber2 % 10 + carry) / 2);

			binaryNumber1 = binaryNumber1 / 10;
			binaryNumber2 = binaryNumber2 / 10;
		}
		if (carry != 0) {
			finalSumOutput[i++] = carry;
		}
		--i;
		System.out.print("Output: ");
		// printing from the last index to 0.
		while (i >= 0) {
			System.out.print(finalSumOutput[i--]);
		}
		System.out.print("\n");
	}

}


输出:
 

100110

 

4.添加二进制数的第二种方法


Java API Integer类具有parseInt()方法,该方法采用字符串和基数。如果我们传递基数值2,则它将考虑字符串值的二进制数。接下来,我们执行sum并将输出int值传递给toBinaryString()方法,该方法将整数转换回二进制数。我们需要二进制格式的期望输出。

让我们看看下面的程序。
 

public class AddBinaryNumbersWay2 {

	public static void main(String[] args) {

		// two binary numbers in string format
		String binaryNumber1 = "10101", binaryNumber2 = "10001";

		// converting strings into binary format numbers
		Integer integer1 = Integer.parseInt(binaryNumber1, 2);
		Integer integer2 = Integer.parseInt(binaryNumber2, 2);

		// adding two integers
		Integer output = integer1 + integer2;

		// converting final output back to Binary Integer
		System.out.println(Integer.toBinaryString(output));

	}

}


输出:

两种方法都采用相同的输入。观察者的输出也相同。两者都产生预期的结果。

 

100110
 
 

 

5.结论


在本文中,您已经学习了如何编写一个Java程序来添加两个二进制数。这可以通过两种方式完成。第一种方法是不使用任何Java API方法,而完全使用交换理论与逻辑设计(STLD)逻辑。第二种方法是使用Integer包装类基数选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值