Java实现模拟二进制加法

您所在的位置:网站首页 二进制满二进一怎么计算 Java实现模拟二进制加法

Java实现模拟二进制加法

2024-02-17 14:49| 来源: 网络整理| 查看: 265

这段时间看到一个面试题面试题是这样的: (1) 给定两个只含有0和1字符的字符串,实现二进制加法。如: String str1 = “101” String str2 = “11” 实现binarySum(String s1,String s2),使得输入以上字符时返回字符串"1000"。 拿到这个需求之后 开始是一脸懵逼,后来仔细分析一下 其实不是那么的难。 首先想要去解决这个问题得知道 二进制加法是怎么回事,因此在这里普及一下二进制加法的知识。 101 011 ———— 1000 其实就是和十进制加法一样的,首先如果两个 二进制长度不一样的话,需要在高位添加0补齐,补齐到两个字符串一般长,然后呢 0+0 =0 1+0=1 1+1=0 进一位,进一位也就是进1。 所以基本搞清楚了 那么就开撸吧。

private static String binarySum(String s1,String s2){ StringBuilder sb=new StringBuilder(); int x=0; int y=0; int pre=0;//进位 int sum=0;//存储进位和另两个位的和 //如果两个数字 位数不一样, 那么在短的那个位数前边补0 while (s1.length()!=s2.length()){ if (s1.length()>s2.length()){ s2="0"+s2; }else { s1="0"+s1; } } //"101" "11" -> "101" "011" //开始从低位往高位加 for(int i=s1.length()-1;i>=0;i--){ x=s1.charAt(i)-'0'; //得出s1某个位置字符对应的int值 y=s2.charAt(i)-'0'; //得出s2某个位置字符对应的int值 sum=x+y+pre;// 从低位开始做加法 if (sum>=2){ //进位 pre=1; sb.append(sum-2); }else { //没有进位 sb.append(sum); pre=0; } } // 如果最后溢出 则补1 if (pre==1){ sb.append("1"); } return sb.reverse().toString();//翻转返回; }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3