广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++怎么实现二进制数相加
  • 404
分享到

C++怎么实现二进制数相加

2023-06-20 16:06:33 404人浏览 八月长安
摘要

这篇文章主要讲解了“c++怎么实现二进制数相加”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++怎么实现二进制数相加”吧!Add Binary 二进制数相加Given two binary

这篇文章主要讲解了“c++怎么实现二进制数相加”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++怎么实现二进制数相加”吧!

Add Binary 二进制数相加

Given two binary strings a and b, return their sum as a binary string.

Example 1:

Input: a = "11", b = "1"
Output: "100"

Example 2:

Input: a = "1010", b = "1011"
Output: "10101"

Constraints:

  • 1 <= a.length, b.length <= 104

  • a and b consist only of '0' or '1' characters.

  • Each string does not contain leading zeros except for the zero itself.

二进制数相加,并且保存在 string 中,要注意的是如何将 string 和 int 之间互相转换,并且每位相加时,会有进位的可能,会影响之后相加的结果。而且两个输入 string 的长度也可能会不同。这时我们需要新建一个 string,它的长度是两条输入 string 中的较大的那个,并且把较短的那个输入 string 通过在开头加字符 ‘0' 来补的较大的那个长度。这时候逐个从两个 string 的末尾开始取出字符,然后转为数字,想加,如果大于等于2,则标记进位标志 carry,并且给新 string 加入一个字符 ‘0'。代码如下:

解法一:

class Solution {public:    string addBinary(string a, string b) {        string res;        int na = a.size(), nb = b.size(), n = max(na, nb), carry = 0;        if (na > nb) {            for (int i = 0; i < na - nb; ++i) b.insert(b.begin(), '0');        } else {            for (int i = 0; i < nb - na; ++i) a.insert(a.begin(), '0');        }        for (int i = n - 1; i >= 0; --i) {            int sum = (a[i] - '0') + (b[i] - '0') + carry;            res = to_string(sum % 2) + res;            carry = sum / 2;        }        if (carry) res.insert(res.begin(), '1');        return res;    }};

下面这种写法又巧妙又简洁,用了两个指针分别指向a和b的末尾,然后每次取出一个字符,转为数字,若无法取出字符则按0处理,然后定义进位 carry,初始化为0,将三者加起来,对2取余即为当前位的数字,对2取商即为当前进位的值,记得最后还要判断下 carry,如果为1的话,要在结果最前面加上一个1,参见代码如下:

解法二:

class Solution {public:    string addBinary(string a, string b) {        string res = "";        int m = a.size() - 1, n = b.size() - 1, carry = 0;        while (m >= 0 || n >= 0) {            int p = m >= 0 ? a[m--] - '0' : 0;            int q = n >= 0 ? b[n--] - '0' : 0;            int sum = p + q + carry;            res = to_string(sum % 2) + res;            carry = sum / 2;        }        return carry == 1 ? "1" + res : res;    }};

感谢各位的阅读,以上就是“C++怎么实现二进制数相加”的内容了,经过本文的学习后,相信大家对C++怎么实现二进制数相加这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: C++怎么实现二进制数相加

本文链接: https://www.lsjlt.com/news/298226.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++怎么实现二进制数相加
    这篇文章主要讲解了“C++怎么实现二进制数相加”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++怎么实现二进制数相加”吧!Add Binary 二进制数相加Given two binary...
    99+
    2023-06-20
  • C++实现LeetCode(67.二进制数相加)
    [LeetCode] 67. Add Binary 二进制数相加 Given two binary strings a and b, return...
    99+
    2022-11-12
  • C语言实现十六进制与二进制的相互转换
    目录十六进制->二进制二进制->十六进制本文中的代码可以将文件中的十六进制存储与二进制存储相互转换。 十六进制->二进制 原理是:每两位存储为一个字符(char)保...
    99+
    2022-11-13
    C语言 十六进制转二进制 C语言 二进制转十六进制 C语言 二进制 十六进制
  • Java图片与二进制相互转换怎么实现
    这篇文章主要介绍了Java图片与二进制相互转换怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java图片与二进制相互转换怎么实现文章都会有所收获,下面我们一起来看看吧。1、下面是一个完整的代码示例指定文...
    99+
    2023-07-05
  • C语言怎么实现两个整数相加
    这篇文章主要介绍“C语言怎么实现两个整数相加”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言怎么实现两个整数相加”文章能帮助大家解决问题。使用 scanf() 来接收输入, printf() 与...
    99+
    2023-06-17
  • C++实现十进制数转换为二进制数的数学算法
    一、十进制转换为二进制的数学算法 设目标十进制数为n,用短除法一直除以2,循环这个过程并记录余数,当商为0时结束循环,余数从后往前读就是转换为的二进制数 eg: 二、代码实现 1....
    99+
    2022-11-12
  • js二进制数据及其互相转化实现详解
    目录filefile文件base64Blobblob的用法ArrayBufferArrayBuffer的使用FileReaderFileReader的使用二进制类型数据的互相转化fi...
    99+
    2023-02-27
    js二进制数据互相转化 js二进制数据转化
  • js二进制数据及其互相转化如何实现
    这篇文章主要介绍“js二进制数据及其互相转化如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“js二进制数据及其互相转化如何实现”文章能帮助大家解决问题。file在js中有很多二进制数据,有fi...
    99+
    2023-07-05
  • c语言怎么实现多项式相加
    在C语言中,可以通过定义一个多项式结构体来表示多项式,然后定义相应的函数来实现多项式的相加。首先,我们可以定义一个包含系数和指数的结...
    99+
    2023-08-18
    c语言
  • C#算法中怎么实现各位相加
    本文小编为大家详细介绍“C#算法中怎么实现各位相加”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#算法中怎么实现各位相加”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。各位相加给定一个非负整数 num...
    99+
    2023-06-26
  • Python怎么实现两数相加
    这篇文章主要讲解了“Python怎么实现两数相加”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么实现两数相加”吧!两数相加题目描述给出两个 非空 的链表用来表示两个非负的整数。...
    99+
    2023-06-02
  • C#怎么对不同参数进行相加处理
    这篇文章主要介绍“C#怎么对不同参数进行相加处理”,在日常操作中,相信很多人在C#怎么对不同参数进行相加处理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#怎么对不同参数进行相加处理”的疑惑有所帮助!接下来...
    99+
    2023-06-17
  • C\C++如何实现读写二进制文件
    这篇文章主要介绍“C\C++如何实现读写二进制文件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C\C++如何实现读写二进制文件”文章能帮助大家解决问题。读写二进制文件打开文件fopen() 函数用...
    99+
    2023-07-05
  • C# BinaryReader实现读取二进制文件
    在 C# 以二进制形式读取数据时使用的是 BinaryReader 类。 BinaryReader 类中提供的构造方法有 3 种,具体的语法形式如下。 第1种形式: Binar...
    99+
    2022-11-12
  • C++实现LeetCode(190.颠倒二进制位)
    [LeetCode] 190. Reverse Bits 颠倒二进制位 Reverse bits of a given 32 bits unsigned integer. Examp...
    99+
    2022-11-12
  • C++实现LeetCode(2.两个数字相加)
    [LeetCode] 2. Add Two Numbers 两个数字相加 You are given two non-empty linked lists rep...
    99+
    2022-11-12
  • c语言二进制怎么转化为十进制
    C语言中可以使用`atoi`函数将二进制字符串转换为十进制整数。下面是一个示例:```c#include #include #inc...
    99+
    2023-09-14
    c语言
  • c语言怎么将十进制转为二进制
    本教程操作环境:windows7系统、c99版本、Dell G3电脑。c语言十进制转为二进制在C语言中,将十进制转换为其它进制时比较复杂。十进制整数转换为 N 进制整数采用“除 N 取余,逆序排列”法。具体做法是:将 N 作为除数,用十进制...
    99+
    2022-11-24
    进制转换 C语言
  • C++如何实现LeetCode两个数字相加
    这篇文章将为大家详细讲解有关C++如何实现LeetCode两个数字相加,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。[LeetCode] 2. Add Two Numbers 两个数字相加You are ...
    99+
    2023-06-20
  • C语言怎么实现两数相除
    本篇内容介绍了“C语言怎么实现两数相除”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!两数相除,如果有余数,输出余数。实例#include &...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作