字母的大小写互换其实很简单

回到最基本的数据的存储形式,从八位二进制角度去看大写字母和小写字母,你会发现它们的低四位是相同的,高四位有细微差别。


举例:

ASCII DEC BIN
‘A’ 65 01000001
‘a’ 97 01100001
‘B’ 66 01000010
‘b’ 98 01100010
‘X’ 88 01011000
‘x’ 120 01111000

仔细观察 发现是第六位不同!

大小写互换的方法

  • 考虑到低四位完全相同 只用互换高四位的第六位就可以实现大小写互换
  • 互换高四位的某一位而不改变低四位,我们联想到位运算中的按位异或^ 关于按位异或 详见按位异或

  • 由按位异或的知识,我们可以寻找一个数,使得任意的一个八位二进制数与它进行异或操作后,高四位的第六位01取反,低四位不变

  • 回顾我们的目标 假如把'A'变为'a' 我们需要把01000001变为01100001,也就是把第六位的0变为1

  • 我们找到这个数了!它的二进制是00100000 十进制是32

  • 01000001^00100000=01100001,是不是很神奇?同理把小写字母'a'变为'A'也只需要把它与32进行按位异或操作就可以啦~


#include<stdio.h>
int main(){int i;char s[100];//读入字符串gets(s);for(i=0;s[i]!='\0';i++){if((s[i]>='A'&&s[i]<='Z')||(s[i]>='a'&&s[i]<='z'))s[i]^=32;//核心语句,实现字符串中字母的大小写互换}printf("%s",s);return 0;
}

样例输入->

Hello,Java!

样例输出->

hELLO,jAVA!

有没有很神奇呢!

欢迎关注我的博客 后续慢慢加入新内容,谢谢!

我的博客主页

C语言字母大小写互换的简单方法相关推荐

  1. c语言中字母大写转小写,C语言中字母大小写转换的简单操作

    大写字母要转换小写字母,要怎么操作呢?而在C语言开发中,我们经常会遇到这样或者那样的问题,别着急,爱站技术频道为你细细道来C语言中字母大小写转换的简单操作. C语言tolower()函数:将大写字母转 ...

  2. C语言将一字符串输入到数组(长度不超过80)后将其输出, 将其中的英文字母大小写互换后再将整个字符串输出。

    题目 将一字符串输入到数组(长度不超过80)后将其输出, 将其中的英文字母大小写互换后再将整个字符串输出. 代码 # include <stdio.h> # include <str ...

  3. r语言barplot函数图中加标签_R语言中绘制条形图的简单方法

    原标题:R语言中绘制条形图的简单方法 条形图(bar chart)是用宽度相同的条形的高度或长短来表示数据多少的图形.它主要用来展示不同分类(横轴)下某个数值型变量(纵轴)的取值.在实际中,条形图主要 ...

  4. python判断质数_使用Python语言判断质数(素数)的简单方法讲解

    本文主要向大家介绍了使用Python语言判断质数(素数)的简单方法,通过具体的实例让大家了解,希望对大家学习Python语言有所帮助. 质数又称素数.指在一个大于1的自然数中,除了1和此整数自身外,不 ...

  5. 使用python判断字母大小写的几种方法

    方法一 使用Python中的内置函数isupper()和islower()来判断一个字母是否为大写或小写字母. # 获取用户输入 letter = input("请输入一个字母:" ...

  6. C语言——字母大小写转化小技巧

    当我们使用C语言刷题的时候,有时候我们遇到这样的问题.例如:leetcode 709. 转换成小写字母.下面我将介绍一种方法解决此类问题的方法(不止局限这道题目,只是拿此题目举个栗子). 前言 在C语 ...

  7. 易语言 base64转图片的简单方法

    介绍 验证码图片地址: data:image/png;base64.... 目的 将地址转换成图片 方法 需要使用精易模块 也可以使用精易模块的 编码_Base64转图片 命令 编码_Base64转图 ...

  8. c语言最小生成树,使用C语言实现最小生成树求解的简单方法

    最小生成树Prim算法朴素版有几点需要说明一下. 1.2个for循环都是从2开始的,因为一般我们默认开始就把第一个节点加入生成树,因此之后不需要再次寻找它. 2.lowcost[i]记录的是以节点i为 ...

  9. java大小写转置,javascript 字符串 数字反转 字母大小写互换

    // 符串abcd123ABCD456 怎么转换为 ABCD321abcd654 // 数字要倒序 小写转大写, 大写转小写 Array.prototype.reverse = function() ...

最新文章

  1. Missing separate debuginfos, use: debuginfo-install
  2. android 串口通信_使用UART与ZYBO进行通信常用外设设计方案
  3. 新手入门python的注意事项_【新手入门Python语言的方法】
  4. 哈希表的大小为何最好是素数
  5. VC++开发演算稿式计算语言-可编程绘图的计算器
  6. spark中local模式与cluster模式使用场景_Spark内核及通信框架概述-针对面试(后面有源码分析)...
  7. JAVA 读取shp数据,shp导入,导出工具
  8. python 爬取视频真实地址_java_爬虫_从腾讯视频播放界面爬取视频真实地址
  9. 如何免费下载百度文库文章
  10. macOS 配置Android SDK 环境变量
  11. ubuntu安装QQ教程
  12. C++_OpenCV模板匹配
  13. 用python做股票因子分析_因子分析(by+alphalens)
  14. 数学不好是原罪——高等数学笔记(汇总版)
  15. SpringBoot中这样定义全局异常处理器Global Exception Handler
  16. 数据守护集群之MPP主备集群
  17. 树莓派如何接硬盘_树莓派3 挂载外接硬盘
  18. 如何判断您是否拥有32位或64位版本的Google Chrome浏览器
  19. 图像分割常见Loss
  20. 【秋招纪实录】一篇特别正经的【TCL】求职经验分享

热门文章

  1. 各位亲朋好友新春大吉
  2. Rate Limiting Algorithms (限流算法)
  3. 生死看淡,不服就GAN(八)----WGAN的改进版本WGAN-GP
  4. Pycharm安装打包工具
  5. 网线直接接电脑可以上网,但是接到无线路由器上,就不能上网了
  6. 人工智能架构图和产业链构成
  7. 怎么让termux运行Java_在安卓手机上通过 Termux 运行编译/运行 .NET 应用
  8. 最近很火的爱心网页(html+css+js),表白必备
  9. 论文笔记:Template-free Prompt Tuning for Few-shot NER
  10. Anaconda Prompt到底是什么? 和系统自带cmd命令提示窗区别又是什么?