• 一个简单的转换字母大小写的方法


    【这里我们将要介绍一个最简单也最快速的转换字母大小写的方法,提示:使用位技巧】

    【以下代码用C语言编写】

    在编程的时候我们经常遇到需要转换字母大小写的情况,有时候就是这个问题,有时候是为了解决其它问题。大家应该能想到一些方法。我将要介绍一种最优美的方法,也就是用比特技巧解决问题。

    我们已近讨论过一些比特操作技巧:

    这里我们来讨论一种利用ASCII值来转换字母大小写的技巧,这个技巧非常简单,只要将字母的ASCII值的第5位(或者第6位,取决于你怎么数)进行异或运算,看下面:

    a = 01100001
    A = 01000001

    看到了吧,只有第5位发生了变化。

    为什么会这样呢?也许是发明ASCII的人认为这是好主意。如果你把a~z的ASCII值写下来,你会发现,所有第5比特的值都是1。于是发明的人就想:那为什么不把A~Z的ASCII值的第5位都设为0呢?这样我们转换大小写就容易多了,于是就这样了吧。

    a = 01100001    A = 01000001 
    b = 01100010    B = 01000010 
    c = 01100011    C = 01000011 
    d = 01100100    D = 01000100 
    e = 01100101    E = 01000101 
    f = 01100110    F = 01000110 
    g = 01100111    G = 01000111 
    h = 01101000    H = 01001000 
    i = 01101001    I = 01001001 
    j = 01101010    J = 01001010 
    k = 01101011    K = 01001011 
    l = 01101100    L = 01001100 
    m = 01101101    M = 01001101 
    n = 01101110    N = 01001110 
    o = 01101111    O = 01001111 
    p = 01110000    P = 01010000 
    q = 01110001    Q = 01010001 
    r = 01110010    R = 01010010 
    s = 01110011    S = 01010011 
    t = 01110100    T = 01010100 
    u = 01110101    U = 01010101 
    v = 01110110    V = 01010110 
    w = 01110111    W = 01010111 
    x = 01111000    X = 01011000 
    y = 01111001    Y = 01011001 
    z = 01111010    Z = 01011010

    现在看下面的代码,将我们要转换大小写的字母与空格进行异或(xor)运算:

    #include<stdio.h>
    int main(void)
    {
        char x = 'A';
        char y = 'b';
     
        printf("Original case:- %c %c",x,y);
     
        x = x ^ ' ';
        y = y ^ ' ';
     
        printf("
    
    Changed case:- %c %c",x,y);
     
        return 0;
    }

    有人问:为什么是空格?因为空格的ASCII值是32,1左移5位,也就是第5比特。

    原文来自http://www.studyalgorithms.com/string/easiest-way-to-change-case-of-alphabets/

    Copyright © 2015 programnote
  • 相关阅读:
    自动化运维工具——ansible剧本playbook(三)
    自动化运维工具——ansible系列命令
    自动化运维工具——ansible命令使用(二)
    自动化运维工具——ansible安装入门(一)
    SSH密钥验证
    es中的或加should
    es聚合后比较结果显示
    es聚合having count>0
    类的内部调用和多线程调用解决事务、aop失效的问题
    es注意点
  • 原文地址:https://www.cnblogs.com/programnote/p/4685565.html
Copyright © 2020-2023  润新知