C++位运算完成ASCII码英文字母大小写转换
来源:互联网 发布:数控外圆磨床怎么编程 编辑:程序博客网 时间:2024/05/20 00:50
C++的位运算是很基础的一个内容。课本,C++ Primer,王爽的汇编语言和编程之美(只看过一点)上都提到了位运算。就个人使用而言,以前只用位运算写过很基础的状态压缩,而王爽的书里讲到了如何使用位运算来完成大小写转换。
这个简单的例子让我直观感受到位运算提供了一个看待问题的新角度,这是以前我体会不深的。
现将书中的讲解概括如下:
我们要将两个字符串分别改为全大写和全小写,而当时读者并不知道怎么用汇编判断一个字符的大小写。通过观察,发现大写字母的ASCII码和其对应的小写字母的ASCII码之间的差值是固定的,那么这个固定的差值反映到ASCII码值对应的二进制表示上,就是所有大写字母的二进制第六位(从1开始计数,从右往左数)是0,而小写字母是1。这样一来,就可以很方便地使用位运算来完成这个工作。
下面给出C++实现:
#include <iostream>#include <string>using namespace std;string s1 = "BaSiC",//将s1中的字母全部改为小写s2 = "iNfOrMatiOn";//将s2中的字母全部改为大写int main() {for (int i = 0;i < s1.size();++i)//C++14支持二进制字面值,可以用等值整数代替s1[i] |= 0b100000;cout << s1 << "\n";for (int i = 0;i < s2.size();++i)s2[i] &= 0b11011111;//在&操作时,注意将前面的1补齐,不然默认是0cout << s2 << "\n";return 0;}
0 0
- C++位运算完成ASCII码英文字母大小写转换
- 位运算,大小写转换
- 使用位运算转换大小写
- 英文字母的大小写转换
- 5.7大小写英文字母转换
- 大小写英文字母转换
- Oj:ytu2671:Problem C: 大小写英文字母转换(1)
- 位运算处理字符串大小写转换
- 大小写转换函数,位运算的使用
- 位运算处理字符串大小写转换
- 位运算与字母大小写转换
- word文档英文字母大小写转换
- 大小写英文字母之间的转换
- C++ASCII码转换
- 输入一个英文字母,大小写的转换
- 在Word中用快捷键转换英文字母大小写
- 在C语言中利用封装好的函数实现英文字母的大小写转换
- C/C++ 与运算和或运算转换大小写
- 算法导论 练习题 13.4-7
- C. Naming Company
- 原型对象和原型链
- 面试7
- rabbitMQ学习笔记
- C++位运算完成ASCII码英文字母大小写转换
- maven setting.xml
- STM32 上电后的启动过程
- 0.课程前置说明
- 大数据面试指南(含答案)
- Java -- 排序03(TreeSet 和 TreeMap)
- 笔记本
- CSDN-markdown编辑器
- decimal system