巧用位运算实现大小写转换

这篇博客介绍了如何在不使用分支判断语句的情况下,利用汇编语言和位运算高效地实现字符串的大写和小写转换。通过观察ASCII码的二进制形式,发现只需改变第5位即可实现大小写的转换,避免了低效的条件判断。文章提供了一段代码示例,演示了这一方法的应用。
摘要由CSDN通过智能技术生成
今天看王爽老师的《汇编语言》时,很有收获,不论是技术还是思考方式。
任务是将字符串进行大小写转换,但是还暂时不会用分支判断语句(而且这样的效率也不是最高的,有点类似于高级语言了)。
“如果一个问题的解决方法,使我们陷入一种矛盾之中。那么,很可能是我们考虑问题的出发点有了问题,或是说,我们起初运用的规律并不适合。”(强行被王老师灌了一碗鸡汤,爽!)
扯点淡:这两天正好遇到一点事情,使我略微开始怀疑自己,(当然也没那么严重,卓教授可是非常厉害的,承载了太多期许的目光,岂能轻言放弃。不能把世界交给我看不起的人!),所以王老师的这句话使我,换一种思考方式,也许会柳暗花明。
初步想法是,判断字符的ASCII码,如果大于61H,则减20H。但是没有判断语句,所以这条道走不通。
我们应该重新观察,寻找新的规律。可以看出,就ASCII码的二进制形式来看,除第5位(位数从0开始计算)外,大写字母和小写字母的其他各位都一样。大写字母ASCII码的第5位为0,小写字母的第5位为1。这样,我们就有了新的方法,一个字母,不管他原来是大写还是小写,将他的第5位置0,他就必将变为大写字母;将他的第5位置1,他就必将变为小写字母。在这个方法中,我们不需要在处理前判断字母的大小写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值