永发信息网

c语言 用位预算符将大写字母转换成小写字母

答案:3  悬赏:80  手机版
解决时间 2021-03-14 09:08
已知char c 存放一大写字母,用位运算符将其转换成小写字母,写出实现的表达式,并解释原因。
最佳答案
大写字母与小写字母差别在2进制数值的第6位. 第6位1是小写,第六位0 是大写.

大写字母到小写字母运算:
unsigned char a=0x41,b;
b = a + 0x20; // 加 0x20, 就是 加 0010 0000

例如字母A, ASCII 值 0x41, 就是 0100 0001
加 0x20, 就成 0110 0001, 就是 0x61, 小写 a.

若用位运算符:
b = a | 0x20;
按位加, 同上面算术加结果一样.

A到Z,ASCII 值 0x41 到 0x5A (0101 0000).
a到z, ASCII 值 0x61 - 0x7A. (第6位添1)
全部回答
修改后代码如下: # include  # include  int main() { char str[20]; int i,j, a;//少了一个逗号 printf("输入字符串,一/停止转换"); gets(str); for(i=0;str[i]!='\0';i++) { if(str[i]=='/') { j=i; for(a=j;str[a]!='\0';a++) printf("%c",str[a]);             break;//后面的就不转换了 } if((str[i]>='a')&&(str[i]<='z')) { printf("%c",str[i]-32); } else printf ("%c", str[i]);//不是小写字母的原样输出 } printf("\n");     return 0; }
首先说一个事实就是ascii字符a-z或者A-Z所对应的整数值都是连续的。比如说'a'如果对应123,那么'b'将对应124,以此类推。 因此不需要知道ascii字符对应的整数值也能够实现转换。 实现可以如下: char bigAscii =...//来自于scanf或者其他什么地方 char smallAscii = bigAscii - 'A' + 'a';//bigAscii - 'A'求出了bigAscii相对于'A'的偏移量。然后加上'a'就可以得到对应的小写字母了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有焦虑症又犯了怎么办
现在购买床品套件,哪家性价比较高?
为什么我的孤岛求生2一直卡在载入游戏就进不
C#控件位置的互换
怀庆府牛肉山药我想知道这个在什么地方
孩子会踢毽子了,家长怎么写感言?
广州舒婴婴儿用品有限公司怎么样?
英语翻译:《一束阳光》是罗恩·米尔纳短篇小
黑龙江省山林电气安装有限公司地址在什么地方
极速贷打了审核电话会通过吗
有一个电影 如果有人突然在祈求上帝或者有信
新破天一剑官服的打孔后天王 光魔怎么加牌在
凌志300号多少钱一辆
理光打字复印这个地址在什么地方,我要处理点
民营企业固定资产购置与资本金有比例限制吗一
推荐资讯
DSP的CCS
都市118连锁酒店(赵县人民医院店)地址在什么
钻石世家吉大景山珠海百货店在什么地方啊,我
我是一名高三学生,将来想从事系统科学领域的
都说成为速美超级家的城市服务商好,为什么啊
雪隆飞在哪里啊,我有事要去这个地方
请问硅主要是做什么用的`?````现在市场怎么样
江苏卫视2014年4月13日凌晨播放的一部关于秦
国参传奇歌词
战火自助烤肉这个地址在什么地方,我要处理点
百岁鱼长葛店地址在哪,我要去那里办事
沭阳车管所违章费用最长多长时间
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?