C语言 C语言入门教程 (6)
C++语言
高薪就业
传智播客 C语言课程概述
C语言入门教程 (6)大纲
1.穷人时代如何节约内存——位运算
2.不仅仅局限于内存——文件
3.灵活却难以理解——指针进阶
4.更深入的理解——函数进阶
5. 生存期、作用域与可见域.
6.初学者的疑难解答
传智播客 6.1穷人时代如何节约内存位运算
n 伟大的比尔盖茨在DOS时代曾经有过这样的说
法 “640K的内存对一般人来说已经足够”,可
现在的电脑内存动辄就是1G、2G,且不评判
上述那句话的正误,但从日新月异的硬件发展
来看,我们就能猜出二三十年前的程序员是如
何在内存使用上精打细算的,与之相比,现代
程序员好像少了很多烦恼,内存似乎永远用不
完,但内存再大,也要精打细算,从位运算的
角度看一下如何合理节约内存的使用。
传智播客 6.1.1什么是位运算
n 从开始到现在,经常出现的一个词是内存单
元,即1B,我们说char型占1个内存单元
(1B),而short型占2个内存单元 (2B)。
1B被当成整体来看,但不要忘记有下面的
等式成立:
n 1 B 8 bits
n 1个字节有8个位,每个位有0、1两个取值,
从这个角度上说,1个字节所能包含的意义
似乎比预想的要大的多。
传智播客 6.1.2开灯关灯
n 举例来说,房间里有8盏灯,为了控制每盏灯的亮灭,可以声明8
个Byte变量,变量为0代表灯灭,变量非0代表灯亮,这完全行
得通,而且看起来很有效率。
n 能否换种角度思考,能不能只有1个字节的8个位来控制8盏灯?
该位为0代表灯灭,该位为1代表灯亮,答案是 “可以”,比较两
种方法,发现使用位操作的方式有效节省了内存,如所示:
传智播客 6.1.3改变状态
假设某个时刻,灯1和灯2亮,而其他灯都灭,此时控制字为
想变换下状态,让灯1和灯3亮, 其他灯灭,目标
控制字只要赋值给该单元即可。
问题又来了,如果原来不知道哪几盏灯亮哪几盏灯灭,现在
还是想让第3盏灯亮起来,赋值操作看来是行不通了,要如何
做呢?
在这个背景下,位运算的概念被提出,即能否只改变控制第3
盏灯的那一位的状态?本章的剩余章节将结合开灯关灯这一
场景讲述位运算的内容。
总体来说,C语言中的位运算符有以下两类:
位逻辑运算符: (位 “与”)、^ (位 “异或”)、| (位 “
或”)、~ (位 “取反”)。
移位运算符: (左移)、 (右移)
传智播客 6.1.4位逻辑运算符
n 大家现在对逻辑运算已经不陌生了,位逻辑
运算的原理与普通逻辑运算基本一致,不同
在于普通的逻辑运算以变量为单位,而位逻
辑运算以位 (bit)为单位,先从最简单的位
取反运算说起。
您可能关注的文档
最近下载
- ISO9001 质量管理体系全套(质量手册+程序文件+表格记录全套).doc VIP
- 深度解析(2026)SYT 5794-2010《钻井液用沥青类评价方法》:从标准解读到未来油田化学智能化应用的战略前瞻.pptx VIP
- 2025-2030中国化学镀镍行业市场发展趋势与前景展望战略研究报告.docx
- 深度解析(2026)《SYT 7377-2017钻井液设计规范》.pptx VIP
- 《船体振动学》教学课件.pdf
- 操作系统Windows操作系统模型.pptx VIP
- 2025年山东省选调公务员考试真题汇编附答案解析(夺冠).docx VIP
- Windows操作系统翻译词汇.pdf
- 基于灰色关联理论的广西农产品供应链影响因素分析.docx
- 关于绑架的小故事-绑架关起来的故事.docx VIP
原创力文档

文档评论(0)