二进制常用计算
n - 1 // 相当于从这个数字最右侧的一个 1 开始之后的所有位都取反
n & n - 1 // 移除低位的 1
(n & n -1) == 0 判断 k 是不是 2 幂次
n & -n // 获取低位的 1,其中 -n = ~n + 1,6 & -6 = 2
n >> i & 1 // 获取 n 二进制的第 i 位
n | 1 << i // 将 n 二进制的第 i 位设为 1
n ^ 1 // 改变奇偶性 +1 / -1
ASCII 的性质:
大写英文字母:其二进制从右往左第 6 个比特值一定是 0。
小写英文字母:其二进制从右往左第 6 个比特值一定是 1。
任何英文字母:其小写字母二进制低 5 位,一定和其大写字母二进制低 5 位相等。
ASCII 编码中,大小写字母之间的关系。它们的二进制表示中,除了最高的三位不同,剩余的五位是相同的。
‘a’ 的 ASCII 码值是 97,二进制表示为 011 00001。
‘A’ 的 ASCII 码值是 65,二进制表示为 010 00001。
它们的二进制表示的最高位之间的区别就是 32,即 2^5。31: 00011111