在一些编程题中,通常会有统一小写、统一大写或者大写转小写、小写转大写等操作。在上一篇中,介绍了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;
代码展示: