大小写字符之间变换的小技巧,速度更快

 发现一个特别好玩的大小写字母之间变换的方法,速度更快。

#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个位运算符号了。

猜你喜欢

转载自blog.csdn.net/yesyes120/article/details/79861080