发现一个特别好玩的大小写字母之间变换的方法,速度更快。
#include <iostream>
#include<string>
using namespace std;
int main()
{
char A = 'A';
char b = 'b';
A = A | 0x20;
b = b | 0x20;
cout <<"这是大写字母变小写字母\nA:" << A << " b:" << b << endl;
A = 'A';
b = 'b';
A = A & 0xdf;
b = b & 0xdf;
cout << "这是小写字母变大写字母\nA:" << A << " b:" << b << endl;
A = 'A';
b = 'b';
A = A ^ 0x20;
b = b ^ 0x20;
cout << "这是大写字母和小写字母之间互换\nA:" << A << " b:" << b << endl;
system("pause");
return 0;
}

其实原理很简单,你先看一下ASCII码表:
大写字母A-Z(65-90)的2进制ASCII码值范围是:0100,0001 至 0101,1010 ,很容易发现,A-Z字符的ASCII码值的D5位(也就是红色标记出的那一位),都是0。
再来看小写字母a-z(97 - 122)的2进制ASCII码值的范围是:0110,0001 至 0111,1010 , 也很容易证明,a-z字符的ACII码值的D5位(也就是红色标记的那一位),都是1。
话就说到这里,还不明白就得自己去学习 & | ^ 这3个位运算符号了。