linux upper函数,使用XOR按位运算在linux中使用toupper和tolower函数
你很可能,但很难看出这一点.
异或:使用常量输入字节值并不比添加(或减去)常量快.并且它变成切换的好处(即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的个数
package _位运算;public class _位运算求整数中1的个数 {public static void main(String[] args) {int n = 4;int ans = ...
- Java 位运算理解 Java中的位移运算整理 Java右移n位 Java左移n位
Java 位运算理解 Java中的位移运算整理 Java右移n位 Java左移n位 一.概述 1.在浏览一篇文章时,看到一个介绍 ,使用位移操作替代乘除法 ,若位移多位该怎么计算呢? 二.代码理解 ...
- 嵌入式linux寄存器位运算,嵌入式linux C语言(一)――位运算的使用
嵌入式linux C语言(一)――位运算的使用 ARM是内存与IO统一编址,SoC中有很多控制寄存器,通过对这些寄存器进行位运算对这些控制寄存器进行设置,进而控制外设功能.在修改寄存器某些位的过程中不 ...
- 力扣 字符串 常用函数总结 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 ...
- 使用枚举的位运算实现游戏中Debuff状态的添加和消除
测试使用的是Unity5.6.5版本 对于一些特殊的场合,我们经常需要对一系列的状态设置开关,今天刚好在做游戏中Debuff状态的开发,使用了枚举的位运算实现该功能,这里做一些总结,以便自己查阅复习. ...
- Java位运算在程序设计中的使用:位掩码(BitMask)
2019独角兽企业重金招聘Python工程师标准>>> Permission public class Permission {// 是否允许查询private boolean al ...
- 【位运算】代码中的常用操作
作者:力扣(LeetCode) 链接:https://www.zhihu.com/question/38206659/answer/736472332 来源:知乎 著作权归作者所有.商业转载请联系作者 ...
- 位运算-查找数组中唯一成对的数
基础实例一:使用位运算判断数的奇偶性 实例代码: public class Test {public static void main(String[] args) {System.out.print ...
- 位运算—统计文本文件中汉字的个数
声明:这些内容主要是面向C语言的初学者,尤其是正在学习C语言的学生. C语言进行底层开发时经常会用到位运算,比如操作系统中的各种描述符,不同的位代表着不同的含义,经常需要按位赋值.关于位运算的细节,教 ...
最新文章
- ARP欺骗原理与模拟
- 超好用的免费文献管理软件Mendeley 简易入门教程
- 开始使用Jenkins
- spring boot: 查看ApplicationContext中有哪些Bean
- yb3防爆电机型号含义_yb3防爆电机型号含义有哪些?
- ST2-045 For POC
- R40使用GPIO中断实现按键功能【原创】
- 线性搜索c语言,线性搜索实例程序(C语言)
- php 类名 属性6,php基础知识(类中属性和方法练习)--2018年9月6日14:01:15
- DTCMS插件的制作实例电子资源管理(三)前台模板页编写
- CentOS 6.8下ELK+filebeat+redis 日志分析平台
- 【html、CSS、javascript-9】jquery-选择器及过滤器
- JAVA版的IntHashMap的多个源码
- 如何批量将 Word 文档转为 Svg 格式
- 工厂供电技术实训设备QY-PGD19
- 电子技术基础(三)__第5章 之逻辑门符号
- ftp-cmd常用命令
- Linux重新挂载磁盘,如何把磁盘挂载到已有目录上面
- winserver2003打开ping
- Django项目于之在线教育平台网站的实战开发(一)