在我们计算高精度加减乘除时,因为无法用long long读入一个很大很大的数,所以我们先用读入字符串的方式读入,然后再将字符串的每一位转换成数字。

下面是最常见的转换代码:

char sa[100];
int a[100];
int len;gets(sa);
len=strlen(sa);for(int i=0;i<len;i++)a[len-i-1]=sa[i]-48;//字符的ASCLL码值减去48即为那一位的数字//48是字符'0'的ASCLL码值

接下来我们介绍一种比上述方法更为快速的转换方法:

众所周知,位运算的速度比加减乘除啥的更快,所以,其实我们可以用一种极其有趣(玄学)的方法。

a[len-i-1]=sa[i]-48  -->  a[len-i-1]=sa[i]^48

你肯定要问为啥(毕竟我刚看到这种的方法就懵了),异或能和减一样?

其实能做到这样的效果都是因为484848这个数有点小特殊。

众所周知,484848的二进制数为110000110000110000。假设我们要将字符′5′'5'′5′转换成数字555,首先我们都知道,′5′'5'′5′的ASCLLASCLLASCLL值为535353,转换成二进制即为110101110101110101。其次,异或的运算规则是,每一位二进制位相同为000,不同为111,所以110000xor110101110000xor110101110000xor110101为101101101,而这个数转换成十进制就是555,因此异或484848,就相当于减去484848了。

注意点:我们上述的技巧适用于字符′0′'0'′0′~′9′'9'′9′转换成数字,若是其他字符映射成数字可能并不成功。

我再讲一个我觉得十分炫酷的位运算小技巧:

如果你要计算一个数乘以101010,再用a∗10a*10a∗10,就太low了,你应该用:a=(a+a<<2)<<1;

附:位运算:

与(andandand,&):都为1为1
或(ororor,|):都为0为0
非(notnotnot,~):若1则0,若0则1
异或(xorxorxor,^):不同为1,相同为0

移位:
左移:1<<n=2n1<<n=2^n1<<n=2n,n<<1=n∗2n<<1=n*2n<<1=n∗2
右移:n>>1=n/2n>>1=n/2n>>1=n/2(下取整)

完结撒花!

如何将字符转换成数字相关推荐

  1. mysql将字符转换成数字

    在操作mysql时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在网上找到的方法记录如下: 1.将字符的数字转成数字,比如'0'转成0可以直接用加法来实现 例如:将pony ...

  2. mysql怎么把字符变成数字_mysql将字符转换成数字

    在操作mysql时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在网上找到的方法记录如下: 1.将字符的数字转成数字,比如'0'转成0可以直接用加法来实现 例如:将pony ...

  3. mysql 将 字符 转换成 数字

    在操作MySQL时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在网上找到的方法记录如下: 1.将字符的数字转成数字,比如'0'转成0可以直接用加法来实现 例如:将pony ...

  4. 将字符转换成数字(atoi),将数字转换成字符(itoa)

    目录 一.将字符转换为数字. 二.将数字转换成字符. 一.将字符转换为数字. (首先字符必须是"0" -"9",然后转换成十进制的数字) 比如将"12 ...

  5. vue中将字符转换成数字的简单做法

    让字符变量减0就行了 var str = '10'; var str_num = str - 0; 这样str_num就是数字了 反过来 int n = 1; var str = n + '' ; 这 ...

  6. php将字符变为数字,数字字符怎么转化为数字 php 怎么将字符转成数字

    java中,String字符串转化为数字 我现在想把一个String字符串转化为数字, String s="00000123" 我直接使java中String字符串转化为数字: 转 ...

  7. 字符串转换成数字的三种方法

    最近经常遇到关于类型转换的问题,索性上网搜搜在此总结一篇 js字符转换成数字主要有三种可用的方法:转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和p ...

  8. c语言中输入字符转换成整数,c语言数字字符串转换成整数 C语言中如何将数字变成字符串啊?...

    C语言:把数字字符串转换成整型数字不懂时,别乱说:懂得时,别多说:心乱时,慢慢说:没话时,就别说. 运行环境:TC2. 把数字字符串转换成整型数字.比如说小编输入一个数字字符当你年轻时,你以为什么都有 ...

  9. python字符串转换成数字_python 字符与数字如何转换

    展开全部 一.python中字符串转换成数字 1.类中进行导入:import string ,str='555',num=string.atoi(str),num即为str转换成的数字转换为浮点数:s ...

最新文章

  1. Jmeter响应内容显示乱码问题的解决办法
  2. 五十七、Servlet工程和Tomcat
  3. 5g应用场景_5G新媒体场景应用解决方案(ppt)
  4. 黑白棋子的移动(东方化改题+???)
  5. 如何在Xbox One或PlayStation 4上为Skyrim特别版安装Mods
  6. 【2018.3.10】模拟赛之二-ssl2575 给出字符串【字符串】
  7. iOS调试技巧-断点调试
  8. for循环连续创建对象
  9. java.io.FileNotFoundException: ...\ibs\library-1.0.17.jar (系统找不到指定的文件。)
  10. 七种实用地方微信推广方法,三个月7000粉丝的秘诀
  11. hivesql:行列转换
  12. 嗖嗖嗖Wordpress外贸企业主题制作教程--第二讲 整站下载器的使用和静态页面的准备
  13. ubuntu20.04安装Linux原生的微信,请注意,这不是wine版本的微信
  14. 使用Feurio刻录音乐CD 无损音乐FLAC
  15. python抓取QQ空间博客文章
  16. win10系统幻灯片播放卡顿
  17. OSPF笔记(二):OSPF邻居与邻接、DR与BDR选举
  18. TOGAF®10标准读书会首场活动圆满举办,精彩时刻回顾!
  19. Ring Buffer (circular Buffer)环形缓冲区简介
  20. C语言 求m~n(m<n)之间所有整数的和

热门文章

  1. 巧妙运用递归实现字符串的倒序输出
  2. vue 的 MD5 加密细节
  3. 大三了,意识到了数学、物理、外语的重要……
  4. mac在App Store下载更新软件失败的解决方法
  5. 关于NoteExpress使用方法小记
  6. 前端学习——HTML的各种标签(以及代码样例)
  7. 笔记本计算机硬件知识,电脑硬件知识(小白必看)
  8. Python日期和时间函数
  9. 水电图纸——等电位连接端子箱-4.2
  10. 《三》CSS 中的 display 属性