你很可能,但很难看出这一点.

异或:使用常量输入字节值并不比添加(或减去)常量快.并且它变成切换的好处(即toupper()和tolower()可以是相同的代码)非常小,因为代码量太小.

拆卸时,这两个功能:

int my_tolower1(int c)

{

return c + 'a' - 'A';

}

int my_tolower2(int c)

{

return c ^ ('a' - 'A');

}

几乎编译成相同的东西,模数当然add vs xor:

my_tolower1(int):

pushq %rbp

movq %rsp,%rbp

movl %edi,-4(%rbp)

movl -4(%rbp),%eax

addl $32,%eax

popq %rbp

ret

my_tolower2(int):

pushq %rbp

movq %rsp,%eax

xorl $32,%eax

popq %rbp

ret

addl和xorl指令都是三个字节,所以没有区别.我认为这些天他们在大多数有趣的cpu上都是单周期的.

请注意,正如我在评论中所说的那样,一般来说,你不应该绕过并假设你的C程序在你可以做出这些假设的环境中运行.然而,Linux内核就是这样一种环境.

linux upper函数,使用XOR按位运算在linux中使用toupper和tolower函数相关推荐

  1. 位运算求整数中二进制1的个数

    package _位运算;public class _位运算求整数中1的个数 {public static void main(String[] args) {int n = 4;int ans = ...

  2. Java 位运算理解 Java中的位移运算整理 Java右移n位 Java左移n位

    Java 位运算理解 Java中的位移运算整理 Java右移n位 Java左移n位 一.概述 1.在浏览一篇文章时,看到一个介绍 ,使用位移操作替代乘除法 ,若位移多位该怎么计算呢?  二.代码理解 ...

  3. 嵌入式linux寄存器位运算,嵌入式linux C语言(一)――位运算的使用

    嵌入式linux C语言(一)――位运算的使用 ARM是内存与IO统一编址,SoC中有很多控制寄存器,通过对这些寄存器进行位运算对这些控制寄存器进行设置,进而控制外设功能.在修改寄存器某些位的过程中不 ...

  4. 力扣 字符串 常用函数总结 cnt [ ch-‘a‘ ]++ 位运算 string转int ,char 转int

    string s;char ch=s[0];vector<char> s1;1.验证字符串是否为空,求字符串长度s.empty();s.length();s.size();2.isalnu ...

  5. 使用枚举的位运算实现游戏中Debuff状态的添加和消除

    测试使用的是Unity5.6.5版本 对于一些特殊的场合,我们经常需要对一系列的状态设置开关,今天刚好在做游戏中Debuff状态的开发,使用了枚举的位运算实现该功能,这里做一些总结,以便自己查阅复习. ...

  6. Java位运算在程序设计中的使用:位掩码(BitMask)

    2019独角兽企业重金招聘Python工程师标准>>> Permission public class Permission {// 是否允许查询private boolean al ...

  7. 【位运算】代码中的常用操作

    作者:力扣(LeetCode) 链接:https://www.zhihu.com/question/38206659/answer/736472332 来源:知乎 著作权归作者所有.商业转载请联系作者 ...

  8. 位运算-查找数组中唯一成对的数

    基础实例一:使用位运算判断数的奇偶性 实例代码: public class Test {public static void main(String[] args) {System.out.print ...

  9. 位运算—统计文本文件中汉字的个数

    声明:这些内容主要是面向C语言的初学者,尤其是正在学习C语言的学生. C语言进行底层开发时经常会用到位运算,比如操作系统中的各种描述符,不同的位代表着不同的含义,经常需要按位赋值.关于位运算的细节,教 ...

最新文章

  1. ARP欺骗原理与模拟
  2. 超好用的免费文献管理软件Mendeley 简易入门教程
  3. 开始使用Jenkins
  4. spring boot: 查看ApplicationContext中有哪些Bean
  5. yb3防爆电机型号含义_yb3防爆电机型号含义有哪些?
  6. ST2-045 For POC
  7. R40使用GPIO中断实现按键功能【原创】
  8. 线性搜索c语言,线性搜索实例程序(C语言)
  9. php 类名 属性6,php基础知识(类中属性和方法练习)--2018年9月6日14:01:15
  10. DTCMS插件的制作实例电子资源管理(三)前台模板页编写
  11. CentOS 6.8下ELK+filebeat+redis 日志分析平台
  12. 【html、CSS、javascript-9】jquery-选择器及过滤器
  13. JAVA版的IntHashMap的多个源码
  14. 如何批量将 Word 文档转为 Svg 格式
  15. 工厂供电技术实训设备QY-PGD19
  16. 电子技术基础(三)__第5章 之逻辑门符号
  17. ftp-cmd常用命令
  18. Linux重新挂载磁盘,如何把磁盘挂载到已有目录上面
  19. winserver2003打开ping
  20. Django项目于之在线教育平台网站的实战开发(一)

热门文章

  1. python3 thinter tkinter.ttk — Tk主题样式设置
  2. hive数据导入hbase
  3. 个人笔记:音频处理(一)声音分类——婴儿哭声分类为例
  4. EasyExcel使用、合并
  5. 逆战小白学习日記(第一节)——web前端入门准备
  6. dropbox文件_计划(旧)Dropbox文件与Finesse一起删除
  7. 动画演示:两个矩阵的欧式距离计算
  8. 第二次创业开始,放手一搏!!!
  9. Win10如何禁用Windows Defender
  10. 云讯健身管理系统-12--SSO单点登录、阿里云短信