#include <stdio.h>
//已知事实是,65的二进制是1000001, 97的二进制是1100001,97前不是字母,因而大写字母对应的ASCII码
//二进制第5(默认最低位为第0位)位皆为0,小写字母的ASCII码二进制第五位皆为1
int main()
{
char ch,tmp;
printf("请输入您要转换的字母");
ch=getchar();//接收输入字符
tmp=getchar();//接收‘\n’
while((ch>'Z'&&ch<'a')||ch<'A'||ch>'z')
{
printf("输入并非字母,请重新输入");
ch=getchar();
tmp=getchar();
}
printf("转换后为:");
if((ch&32)!=0)//输入字符的第五位1,为小写
{
ch=ch&223;//使第五位 1->0 小写->大写 右边尽量满足8bit位
}
else
{
ch=ch|32;
}
printf("%c\n",ch);
return 0;
}
/*
异或应用:使特定位取反,如0101 1011^0000 1111=0101 0100 使低四位取反
一个数异或两次还是它本身
交换 a=a^b;b=a^b;a=a^b;
与 应用:取特定位 如0101 1011&0000 1111=0000 1011 保留低四位
清零 …… 高四位清零
*/
位运算,大小写转换
最新推荐文章于 2023-08-17 14:42:32 发布