java两个二进制数求和_用java实现输入两个二进制数并仍然以二进制输出其和,不能用先转十进制相加再转二进制的方法,请给出代码...

这篇博客介绍了一个使用Java实现的算法,用于直接对两个二进制数进行求和,而不需要转换为十进制。通过模拟自然语言中的加法步骤,逐位进行加法运算,并处理进位,直到没有进位为止。提供的代码示例展示了如何完成这一过程。
摘要由CSDN通过智能技术生成

展开全部

我这个算法不高,暂时想不到别的方法,你试试吧。

主要是模拟自然语言中的加法运算步32313133353236313431303231363533e4b893e5b19e31333332633665骤。

两个数相加,会得到一个结果,和一个进位的结果,

然后将这个进位的结果后面加0补位,然后再和这个结果相加。如此递归,知道进位全部是0为止public class $ {

public static void main(String[] args) {

String s0 = "100";// 十进制4

String s1 = "10100";// 十进制20

StringBuffer result = new StringBuffer();

StringBuffer jinwei = new StringBuffer();

System.out.println(test(result, jinwei, s0, s1));

}

private static String test(StringBuffer result, StringBuffer jinwei, String s0, String s1) {

// 没有进位了就退出

if (s0.length() > 0 && s0.indexOf("1") 

return s1;

}

//位数补齐

int len0 = s0.length();

int len1 = s1.length();

int minLen = Math.max(len0, len1);

s0 = buqi(len0, minLen) + s0;

s1 = buqi(len1, minLen) + s1;

for (int i = s0.length() - 1; i >= 0; i--) {

String str0 = s0.substring(i, i + 1);

String str1 = s1.substring(i, i + 1);

add(result, jinwei, str0, str1);

}

String tmpJinwei = jinwei.reverse().toString() + "0";

jinwei.delete(0, jinwei.length());

String tmpResult = result.reverse().toString();

result.delete(0, result.length());

return test(result, jinwei, tmpJinwei, tmpResult);

}

private static void add(StringBuffer result, StringBuffer jinwei, String str0, String str1) {

// 00相加为0,不进位

if ("0".equals(str0) && "0".equals(str1)) {

result.append("0");

jinwei.append("0");

return;

}

// 11相加为0,进位1

if ("1".equals(str0) && "1".equals(str1)) {

result.append("0");

jinwei.append("1");

return;

}

// 其他情况,相加为1,不进位

result.append("1");

jinwei.append("0");

}

private static String buqi(int len0, int minLen) {

String tmp = "";

for (int i = len0; i 

tmp += "0";

}

return tmp;

}

}

结果011000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值