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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值