C/C++学习笔记
文章平均质量分 78
枫铃树
这个作者很懒,什么都没留下…
展开
-
【操作系统】X86架构的64位操作系统探索
对AMD64(IA-32e)架构下的操作系统内核的研究。原创 2023-02-13 14:27:15 · 1867 阅读 · 0 评论 -
glibc strlen 实现方式分析
本文对 glibc 2.35 源码中的 函数实现展开研究,分析其使用位运算实现更快长度计算的原理。下面是 glibc strlen.c 的文件内容:分析区别于逐一比较每个字符是否为0,glibc的strlen采用每8字节(64位程序)一比较的方式,快速找到为0的字节。之后,对含0的8字节内进行逐字节比较,找到0的位置。为提升效率,首先对前几个字符进行逐一比较,直到指针与long型地址对齐。比较原理之后,是每8位一比较的原理。假如某字节为全0,即为 00000000(二进制)。那么,如果我们对它进原创 2022-07-04 15:24:30 · 321 阅读 · 0 评论 -
C/C++ 标准输入方式的输入错误处理
需求描述从输入缓冲区读一个数,希望读到的是一个从0到100的整数(闭区间)。为方便输入者,我们适当提供提示,但无法预测输入者是否按照我们的规定在输入。处理原则如果用户输入的确实是整数,并且整数范围在我们想要的区间内([0, 100]),则输入成功。如果用户输入的是超出范围的整数,则提醒用户重新输入。如果用户输入的数据类型错误(比如输入了abc),会导致输入流错误(不理解啥是输入流?可以先不管),应该清空整个输入缓冲区。注:上述第二种情况,由于输入流状态正常,说不定后面有一个正确的数据等着呢原创 2021-11-03 11:41:29 · 9458 阅读 · 18 评论