博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个简单的转换字母大小写的方法
阅读量:7297 次
发布时间:2019-06-30

本文共 1502 字,大约阅读时间需要 5 分钟。

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

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

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

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

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

a = 01100001A = 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
int main(void){ char x = 'A'; char y = 'b'; printf("Original case:- %c %c",x,y); x = x ^ ' '; y = y ^ ' '; printf("\n\nChanged case:- %c %c",x,y); return 0;}

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

原文来自

转载于:https://www.cnblogs.com/programnote/p/4685565.html

你可能感兴趣的文章
iOS 枚举器NSEnumerator
查看>>
【CodeForces】913 C. Party Lemonade
查看>>
五张图理解一致性Hash原理
查看>>
转 python数据类型详解
查看>>
【转】Delphi 关键字详解
查看>>
四:Ionic Framework不支持Android4.2.2的解决方法
查看>>
转载:JAR包介绍大全用途作用详解JAVA
查看>>
从零开始学React:二档 React生命周期以及组件开发
查看>>
ruby, gem install 出现网络错误
查看>>
Android 验证APK是否已经签名或是否是Debug签名
查看>>
H.264简介
查看>>
ORB
查看>>
CAAnimation
查看>>
MySQL索引背后的数据结构及算法原理
查看>>
docker 8 docker的镜像命令
查看>>
CentOS 7 开放3306端口访问
查看>>
执行力
查看>>
关于毛刺
查看>>
微信小程序自定义微信客服按钮
查看>>
Ural 1014 Product of Digits NYOJ 270 数的分解 解题报告
查看>>