妙用位运算

ascii 码表的设计

大写字母的码范围是 65 - 90;

小写字母的码范围是 97 - 122;

为什么大写字母后不是直接排小写字符,而是隔了6个码?为什么a-A不是26而是32?来看看他们的二进制:

A: 65 (0100 0001); Z: 90 (0101 1010)
a: 97 (0110 0001); z: 122 (0111 1010)

看出来了吗,这样设计的结果是大小写字母只在低6位这一位不同,而这样的结果是当需要进行大小写转换时就能利用位运算。

转为小写:|= 32 ;(32:0010 0000)

转为大写:&= -33;(-33:1101 1111)

大小写互换:^= 32

持续更新...

原文地址:https://www.cnblogs.com/cpcpp/p/15679791.html