利用位運算進行字母大小寫轉換

題目:輸入大寫字母,輸出小寫字母;輸入小寫字母,輸出大寫字母;若輸入其他字符,提示重新輸入

解題思路

A的ASCII值爲65,二進制表示爲:0100  0001

a的ASCII值爲97,二進制表示爲:0110  0001

可以發現,大小寫字母的二進制的第五位(從0開始數)是不同的,其他的均是相同的,因此,可以通過這個位的相互轉換來實現大小寫字母的相互轉換。

直接上代碼:

#include <iostream>

using namespace std;

int main()
{
	char ch;

	cout << "請輸入一個字符 : ";
	cin >> ch;
	if (ch < 'A' || (ch > 'Z' && ch < 'a') || ch > 'z')
	{
		cout << "輸入錯誤,請輸入一個字母 : ";
		cin >> ch;
	}

	if (ch & 32)
	{
		ch = ch & 223; //223的二進制爲:1101 1111
	}
	else
	{
		ch = ch | 32; //32的二進制爲:0010 0000
	}

	cout << ch << endl;

	system("pause");
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章