字符串学习1——字符串为什么减‘0’成整数

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;
    }
};

在看代码时出现疑惑:为什么用字符串的某位数字减去‘0’就能得到该整数呢?

下面就说说为什么字符减'0'可以到相应的整数。现在比如我们要字符‘1’转换成数字1,就这么一个变化,我们看到了大家注意了字符型常量用''括起来的原因是,它们在计算机中都以各自的ASCII表示。而‘1’的对应编码是49的二进制码,但是我们的数字1,就等于1呀,所以为了由原来的‘1’实际上就是49的二进制变成现在的1对应的二进制1,只好用49-48=1了。但是在ASCII码里‘0’对应的刚好是48的二进制码,所以我们转换的时候只需要‘1’-‘0’=1;就可以了。而数字的ASCII码是按顺序规定的。所以其它字符要转换成数字都可以用减‘0’来表示。比如‘2’的ASCII是50,而我们要得到数字2,于是用‘2’-48=2了。看来当我们知道数据在计算机中的存储规则的时候,问题就迎刃而解了。

总之一句话:因为ASCII字符中的数字(‘123456’)想转换为纯数字(1,2,3,4...)就要减去48(ASCII单位),而‘0’的ASCII单位正好等于48。

转载自:https://www.cnblogs.com/sprayer/p/3163825.html

  • 45
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值