当前位置: 首页 > news >正文

两个二进制数求和

输入两个二进制数,输出它们的和(二进制)

例如,输入“11 1”,输出“100”;

例如,输入“11 111”,输出“1010”;

 1 #include<iostream>
 2 #include<string.h>
 3 #include<vector>
 4 using namespace std;
 5 int main(){
 6     char a[20], b[20], n=0;//n表示是否进位,n=1表示进位,n=0表示不进位 
 7     vector<int> sum;
 8     cin>>a>>b;
 9     int an=strlen(a);
10     int bn=strlen(b);
11     int j=bn-1;
12     int i=an-1;//从ab的低位开始运算 
13     for(; i>=0; i--){
14         if((a[i] - '0') + (b[j] - '0')+n>1){//用a[i]-'0'把字符转化为整数 ,大于1表示要进位 
15             sum.push_back((a[i] - '0') + (b[j] - '0')+n-2);//把进位后的结果加到存进vector中 
16             n=1;
17         }else{
18             sum.push_back((a[i] - '0') + (b[j] - '0')+n);//不进位就把和直接存入vector当中 
19             n=0;
20         }
21         j--;
22         if(j<0){//表示第二个数b所有位数都求和过了,没有数再和a进行比较,跳出循环 
23             i--;
24             if(i<0&&n==1){
25                 sum.push_back(1);
26             }
27             break;
28         }
29     }
30     while(i>=0){//表示第二个数b所有位数都求和过了,此时把a中还未求和的数再进行运算 
31         if((a[i]-'0')+n>1){//需进位 
32             sum.push_back((a[i]-'0')+n-2);
33             n=1;
34         }else{
35             sum.push_back((a[i]-'0')+n);
36             n=0;
37         
38         }
39         i--;
40         if(i<0&&n==1){
41             sum.push_back(1);
42         }
43     }
44     while(j>=0){//表示第一个数a所有位数都求和过了,此时把b中还未求和的数再进行运算 
45         if((b[j] - '0')+n>1){//进位 
46             sum.push_back((b[j] - '0')+n-2);
47             n=1;
48         }else{
49             sum.push_back((b[j] - '0')+n);
50             n=0;
51         }
52         j--;
53         if(j<0&&n==1){
54             sum.push_back(1);
55         }
56     }    
57     
58     //遍历vector.倒着把每一位数输出 
59     int m=sum.size();
60     for(int i=m-1; i>=0; i--){
61         cout<<sum[i];
62     }
63     
64     return 0;
65 }

 

转载于:https://www.cnblogs.com/liuxclxc/p/7608977.html

相关文章:

  • magento 货币换算
  • iOS -- tableView顶部留白
  • C链表的简单案例
  • Java与面向对象设计
  • TCP与UDP的区别
  • Mysql Order By 字符串排序,mysql 字符串order by
  • Java7,AutoClosable
  • Java循环练习:婚礼上的谎言
  • yum命令使用大全   软件安装
  • Linux信号
  • 云计算如何结合DevOps推动软件交付成功
  • gnome-boxes 的安装与使用
  • ETL简介
  • 前端学习笔记之观察者模式
  • LeetCode: Min Stack 最小栈 Java
  • ----------
  • 08.Android之View事件问题
  • IDEA常用插件整理
  • Java编程基础24——递归练习
  • JS题目及答案整理
  • leetcode386. Lexicographical Numbers
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • python 装饰器(一)
  • SpiderData 2019年2月13日 DApp数据排行榜
  • vue-cli3搭建项目
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 半理解系列--Promise的进化史
  • 产品三维模型在线预览
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 简单实现一个textarea自适应高度
  • 如何选择开源的机器学习框架?
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (2022 CVPR) Unbiased Teacher v2
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (4)(4.6) Triducer
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)平衡树
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET Core 版本不支持的问题
  • .NET Project Open Day(2011.11.13)
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .net 设置默认首页
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .net中我喜欢的两种验证码