zoukankan      html  css  js  c++  java
  • ASCII中关于大小写字母间隔为32的思考

    一直没有搞清楚为什么在ASCII中要把大小写字母的间隔设置为32,今天才发现这样设置的精妙之处:方便了程序对大小写字母进行转换。请看:
    =================
    十进制        32
    十六进制     20
    二进制         00100000
    =================
    在大写转小写时,我们常用的做法是对字符的数值加32,该过程如下所示:
    =========================
    字符         A                  a
    十进制     65                 97
    二进制     01000001     01100001
    字符         Z                   z
    十进制     90                 122
    二进制     01011010     00111010
    =========================
    可以看到,这个过程可以归纳为二进制值的右起第6位由0置为1,其余位不变。那么,我们可以这样来实现这个转换过程:
    lcase = ucase | 0x20
    反之,小写转大写的过程可以归纳为右起第6位由1置为0,其余位不变。那么,转换过程可以这样来实现:
    ucase = lcase & 0xdf
    注:0xdf=0b11011111
  • 相关阅读:
    POJ 2752 KMP中next数组的理解
    KMP详解
    HDU 3221 矩阵快速幂+欧拉函数+降幂公式降幂
    POJ 3220 位运算+搜索
    反素数深度分析
    POJ 2886 线段树单点更新
    求反素数的方法
    CV第八课 GPU/CPU
    49. 字母异位词分组
    48. 旋转图像
  • 原文地址:https://www.cnblogs.com/pzy4447/p/3348360.html
Copyright © 2011-2022 走看看