请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

猿媛之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 5565|回复: 0

如何实现二进制字符串加法

[复制链接]

554

主题

556

帖子

1938

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1938
发表于 2015-12-9 22:53:12 | 显示全部楼层 |阅读模式
      给定两个二进制字符串,返回它们的和,比如s1="10",s2="1",返回值为11。
  1. public class Test1 {
  2.         public static String addBinary(String s1, String s2) {
  3.             if(s1==null || s1.length()==0)
  4.                 return s2;
  5.             if(s2==null || s2.length()==0)
  6.                 return s1;
  7.          
  8.             int len1 = s1.length()-1;
  9.             int len2 = s2.length()-1;
  10.          
  11.             int carry = 0;
  12.             String result="";
  13.             while(len1 >= 0 || len2 >=0){
  14.                 int va = 0;
  15.                 int vb = 0;
  16.          
  17.                 if(len1 >= 0){
  18.                     va = s1.charAt(len1)=='0'? 0 : 1;   
  19.                     len1--;
  20.                 }
  21.                 if(len2 >= 0){
  22.                     vb = s2.charAt(len2)=='0'? 0: 1;
  23.                     len2--;
  24.                 }
  25.          
  26.                 int sum = va + vb + carry;
  27.                 if(sum >= 2){
  28.                     result+=String.valueOf(sum-2);
  29.                     carry = 1;
  30.                 }else{
  31.                     carry = 0;
  32.                     result+=String.valueOf(sum);
  33.                 }
  34.             }
  35.             //进位
  36.             if(carry == 1){
  37.                 result+="1";
  38.             }
  39.             return result;
  40.         }
  41.         
  42.         public static void main(String[] args)
  43.         {
  44.                 String s1="10";
  45.                 String s2="1";
  46.                 System.out.println(addBinary(s1,s2));
  47.         }

  48. }
复制代码

       程序员运行结果为:
       11

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|猿媛之家    

GMT+8, 2021-10-25 08:33 , Processed in 0.214651 second(s), 33 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表