题目:输入两个表示二进制的字符串,请计算它们的和,并以二进制字符串的形式输出。
package 剑指Offer.整数除法和二进制加法;
/**
* @program:多线程和IO
* @descripton:二进制加法
* @题目:输入两个表示二进制的字符串,请计算它们的和,并以二进制字符串的形式输出。
* @author:ZhengCheng
* @create:2021/9/24-18:38
**/
public class AddBybBinary {
public static void main(String[] args) {
String num1 = "10110";
String num2 = "100111";
String s = addByBinary(num1, num2);
System.out.println(s);
}
private static String addByBinary(String str1, String str2) {
StringBuilder sb = new StringBuilder();
int i = str1.length()-1;
int j = str2.length()-1;
int tempNum = 0; //tempNum
while ( i>=0|| j>= 0){
int tempa = i >= 0? str1.charAt(i--) -'0':0;//重点步骤,注意判断i和j
int tempb = j >= 0? str2.charAt(j--) -'0':0;
int sum = tempa + tempb + tempNum;
tempNum = sum >2?1:sum;
sum = sum >= 2 ? sum-2:sum;
sb.append(sum);
}
if (tempNum == 1){
sb.append(1);
}
return sb.reverse().toString();
}
}
本文介绍了一种处理二进制字符串加法的方法,通过遍历输入的二进制字符串并进行位运算实现两个二进制数的相加,最终返回结果作为二进制字符串输出。
1140

被折叠的 条评论
为什么被折叠?



