位运算实现字符的大小写转换

在一些编程题中,通常会有统一小写、统一大写或者大写转小写、小写转大写等操作。在上一篇中,介绍了java的API:点击查看详细说明s.toLowerCase(); s.toUpperCase(); 两种方法,但是这不足以让我们学习其真正的运算原理,而且对于 大写转小写且小写转大写 的操作,用API的方法较为复杂。

所以,学习用位运算解决类似问题,可以了解运算的基本原理,更重要的是何以提高运算效率。

A:0100 0001
B:0100 0010
……
Z:0101 1010
a:0110 0001
b:0110 0010
……
z:0111 1010

根据字母的二进制ASCII码值,可以看出,第7位全为1(从右往左数),而字母的区别在于0-7位;仔细观察发现,大写的第六位全是0,而小写的第六位全是1;神奇的是, 同一字母的大写和小写除了第六位不同,其它位都相同。 所以要想改变大小写,需要对第六位的二进制做处理,第六位为1的数字是32:0010 0000,所以借助位运算符便可实现大小写转换。下面将逐个讲解。

大写变小写,小写变大写

格式:
字符^=32;

代码展示:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值