Linux源码学习之位移赋值
来源:互联网 发布:剑网三捏脸数据萝莉 编辑:程序博客网 时间:2024/05/29 18:18
大家都知道Linux以高效快速著名,内核代码很多地方都能体现这种高效的设计思想。
最近阅读就发现,代码很多地方使用一个数的高、低位分别表示不同的内容,以及位移来赋值。
好处是,一方面,通过一个高、低位表示不同的内容可在运行的时候少的使用稀缺的内存空间,另一方面,大家都晓得在CPU中位移计算相对比其他计算快的。虽然这些细节都很小,但是注意细节,每个细节都做好才能做出最优秀、流畅的产品。
针对位移对数值高、低位赋值,进行了简单的测试。
程序的用意是把nNum = 5865赋值到nTest的低24位中。高位值不变,从而实现对一个值的高低位表示不同值的赋值。
<span style="font-size:18px;">#define SHIFT 24int main(int argc, char* argv[]){unsigned long nTest = 79544654;//100101111011100000101001110unsigned long nNum = 5865; //000000000000001011011101001nTest = nTest>>SHIFT;printf(">> %u\n", nTest); //000000000000000000000000100nTest = (nTest<<SHIFT) |nNum; //100000000000001011011101001printf("<< %u\n", nTest);return 0;}</span>
79544654右移24位再左移动,相当于把低24位清零,然后与nNum进行按位或,即将Numd值赋予nTest的低24位。
对高位赋值与其相反。
0 0
- Linux源码学习之位移赋值
- java 学习笔记之位移运算符
- Halcon学习之赋值
- Linux c编程一站式学习笔记(06), 位移操作
- linux学习之源码安装软件
- Linux内核源码学习之 内核编译
- Linux内核源码学习之 基本知识
- Linux内核源码学习之僵尸进程
- Linux内核源码学习之 数据结构
- Linux学习之源码2:start_kernel流程
- LINUX学习之源码2:START_KERNEL流程
- Boost源码剖析之:容器赋值-assign
- Boost源码剖析之:容器赋值-assign
- Boost源码剖析之:容器赋值-assign
- golang学习笔记之赋值
- 位移运算符学习总结
- Animation之translate(位移动画)
- android 动画之---位移抛物线
- 安卓开发者必备的几个工具
- 2.10 创建多边形表面模型的一些提示
- 图的最小生成树
- 拓展kmp模板
- (1217)HDU
- Linux源码学习之位移赋值
- 黑马程序员---c语言--内存分析与数组
- Codeforces Round #289 (Div. 2, ACM ICPC Rules) E. Pretty Song
- c# 判断string是不是数字
- Intel 中国研究院面试经历
- 轻松使用git命令查看版本记录
- 面试01
- 小希的迷宫
- Android Studio vs Eclipse:你需要知道的那些事