位运算与字母大小写转换
2016-04-21 09:01
246 查看
声明:这些内容主要是面向C语言的初学者,尤其是正在学习C语言的学生。
在读王爽老师的《汇编语言》时,看到了用and 和or指令处理字母大小写转换的例子。and 和or是汇编语言中按位与和按位或操作的指令,对应C语言中的&和|操作。本文把这个例子的C语言版在这里重复一下,以便理解和扩充位运算的应用。
我们知道大小写字母的ASCII码值差32,因此我们通常采用直接加减32的方法来进行大小写字母的转换。如果要用位运算来操作,则必须先从大小写字母的ASCII码值的二进制形式入手。下表列出了部分字母的大小写的ASCII码值的二进制形式。
仔细观察上表的两列二进制形式,可以发现这样的规律:除第5位外(位数从0开始计算),大写字母和小写字母的其他各位都一样,大写字母的第5位为0,小写字母的第5位为1。因此,对于一个字母,不管原来是大写还是小写,将其第5位置0,它就必将变成大写字母;将其第5位置1,它就必将变成小写字母。下面的程序将两个大小写混合的字符串分别转换为大写和小写字母串。
在读王爽老师的《汇编语言》时,看到了用and 和or指令处理字母大小写转换的例子。and 和or是汇编语言中按位与和按位或操作的指令,对应C语言中的&和|操作。本文把这个例子的C语言版在这里重复一下,以便理解和扩充位运算的应用。
我们知道大小写字母的ASCII码值差32,因此我们通常采用直接加减32的方法来进行大小写字母的转换。如果要用位运算来操作,则必须先从大小写字母的ASCII码值的二进制形式入手。下表列出了部分字母的大小写的ASCII码值的二进制形式。
大写 | 十六进制 | 二进制 | 小写 | 十六进制 | 二进制 |
A | 41 | 01000001 | a | 61 | 01100001 |
B | 42 | 01000010 | b | 62 | 01100010 |
C | 43 | 01000011 | c | 63 | 01100011 |
D | 44 | 01000100 | d | 64 | 01100100 |
E | 45 | 01000101 | e | 65 | 01100101 |
F | 46 | 01000110 | f | 66 | 01100110 |
相关文章推荐
- 第八周项目四 游戏中的角色类增强版
- 什么是java本地方法(Native Method)
- 贝叶斯学习--极大后验概率假设和极大似然假设
- 俄罗斯方块游戏JavaScript代码
- win7下装完ubuntu linux后,开机画面怎直接进入linux了,win7怎么启动
- 管道 PIPE
- JS、jQuery中select的用法详解
- 为什么你10年经验依旧平庸,他人却2年成就卓越?( 转载过来的)
- spring框架学习(一)
- IE11 F12工具报错 An error has occurredJSPlugin.3005
- 快速排序--Java
- char数组的scanf与strlen
- Unity IOC注入详细配置(MVC,WebApi)
- 初识函数:输入两个数,再输入一个运算符,得到结果,用函数封装
- MFC添加鼠标移动到控件上时的提示信息
- 正则表达式
- 第四周项目:小学生算术能力测试系统
- J-LINK连产品出现连接不上的问题
- CSS笔记(语法)
- c++第四次实验——分数的累加