首页 > 代码库 > 待解:通过把第6位设置为0使小写字母都变成大写字母

待解:通过把第6位设置为0使小写字母都变成大写字母

根据Unicode/ASCII字符集的定义,小写字母与大写字母的区别只是前者比后者整整大32。因此……

 1 class UpCase { 2     public static void main(String[] args) { 3         char ch; 4          5         for (int i = 0; i < 10; i++) { 6             ch = (char) (‘a‘ + i); 7             System.out.print(ch); 8              9             // This statement turns off the 6th bit.10             ch = (char) ((int) ch & 65503); // ch is now uppercase11             12             System.out.print(ch + " ");13         }14     }15 }

程序输出如下所示:

aA bB cC dD eE fF gG hH iI jJ 

 

&语句中使用的值65 503表示二进制中的1111 1111 1101 1111。因此,按位与操作就只会让ch中的第6位设置0,而其他所有位都不变。

待解:通过把第6位设置为0使小写字母都变成大写字母