展开全部

主编推荐语

一本书帮你了解从用户双击程序图标到程序开始运行之间到底发生了什么。

内容简介

本书从计算机的内部结构开始讲起,以图配文的形式详细讲解了二进制、内存、数据压缩、源文件和可执行文件、操作系统和应用程序的关系、汇编语言、硬件控制方法等内容。书中还专设了“如果是你,你会怎样讲呢?”专栏,以小学生、老奶奶等为对象讲解程序的运行原理,颇为有趣。

第3版升级了书中用到的软件产品和开发工具,并在正文和注释中补充了大量内容,让初学者更容易理解。对于旧版中颇受好评的硬件相关章节,更新了C语言的样例代码。书末附录关于C语言的章节也升级至最新标准。

第12章新增了Python机器学习的内容,让初学者能够轻松体验人工智能的乐趣。附录也增加了对Python语言的介绍。本书图文并茂,通俗易懂,非常适合计算机爱好者及相关从业人员阅读。

目录

  • 版权信息
  • 译者序
  • 前言
  • 程序是怎样跑起来的
  • 本书的结构
  • 第1章 对程序员来说,CPU到底是什么
  • 1.1 看一看CPU的内部构造
  • 1.2 CPU是寄存器的集合体
  • 1.3 决定程序流程的程序计数器
  • 1.4 条件分支和循环的原理
  • 1.5 函数调用的原理
  • 1.6 用基址和变址实现数组
  • 1.7 CPU的处理其实很简单
  • 第2章 用二进制来理解数据
  • 2.1 计算机用二进制处理信息的原因
  • 2.2 二进制到底是什么
  • 2.3 移位运算与乘除运算的关系
  • 2.4 便于计算机处理的“2的补码”
  • 2.5 逻辑右移与算术右移的区别
  • 2.6 掌握逻辑运算的窍门
  • 第3章 计算机在计算小数时会出错的原因
  • 3.1 将0.1累加100次的结果不是10
  • 3.2 如何用二进制表示小数
  • 3.3 计算机计算出错的原因
  • 3.4 什么是浮点数
  • 3.5 规格化表示法与移码表示法
  • 3.6 用程序来实际确认一下吧
  • 3.7 如何避免计算机计算出错
  • 3.8 二进制与十六进制
  • 第4章 让内存化方为圆
  • 4.1 内存的物理结构十分简单
  • 4.2 内存的逻辑结构像一幢大楼
  • 4.3 指针其实很简单
  • 4.4 用好内存先从数组开始
  • 4.5 栈与队列,以及环形缓冲区
  • 4.6 在链表中添加和删除元素很容易
  • 4.7 用二叉查找树高效地查找数据
  • 第5章 内存与磁盘的密切联系
  • 5.1 程序加载到内存后才能运行
  • 5.2 提高磁盘访问速度的磁盘缓存
  • 5.3 将磁盘当成内存使用的虚拟内存
  • 5.4 将内存当成磁盘使用的固态硬盘
  • 5.5 节约内存的编程技巧
  • 5.6 了解一下磁盘的物理结构
  • 第6章 自己动手压缩数据
  • 6.1 文件是以字节为单位记录的
  • 6.2 游程编码的原理
  • 6.3 游程编码的缺点
  • 6.4 从莫尔斯码中发现哈夫曼算法的基础
  • 6.5 使用树来构建哈夫曼编码
  • 6.6 通过哈夫曼算法大幅提高压缩效率
  • 6.7 无损压缩与有损压缩
  • 第7章 程序在怎样的环境下运行
  • 7.1 运行环境=操作系统+硬件
  • 7.2 Windows消除了CPU之外的硬件差异
  • 7.3 每种操作系统的API都是不同的
  • 7.4 使用源代码进行安装
  • 7.5 在任何地方都能提供相同运行环境的Java虚拟机
  • 7.6 云计算平台提供的虚拟运行环境
  • 7.7 BIOS与引导装入程序
  • 第8章 从源文件到可执行文件
  • 8.1 计算机只能执行本机代码
  • 8.2 看一看本机代码的内容
  • 8.3 编译器负责翻译源代码
  • 8.4 仅靠编译无法得到可执行文件
  • 8.5 启动代码与库文件
  • 8.6 DLL文件与导入库
  • 8.7 运行可执行文件需要什么
  • 8.8 加载时生成的栈和堆
  • 8.9 进阶问答
  • 第9章 操作系统与应用程序的关系
  • 9.1 从历史发展看操作系统的功能
  • 9.2 关注操作系统的存在
  • 9.3 系统调用与高级编程语言的可移植性
  • 9.4 操作系统和高级编程语言对硬件进行了抽象化
  • 9.5 Windows操作系统的特点
  • 第10章 通过汇编语言认识程序的真面目
  • 10.1 汇编语言和本机代码是一一对应的
  • 10.2 用C编译器输出汇编语言源代码
  • 10.3 伪指令与注释
  • 10.4 汇编语言的语法是“操作码 操作数”
  • 10.5 最常用的movl指令
  • 10.6 将数据存入栈中
  • 10.7 函数调用的工作原理
  • 10.8 被调用函数的工作原理
  • 10.9 全局变量和局部变量的工作原理
  • 10.10 循环的工作原理
  • 10.11 条件分支的工作原理
  • 10.12 体验汇编语言的意义
  • 第11章 访问硬件的方法
  • 11.1 应用程序是否与硬件有关
  • 11.2 负责硬件输入输出的in指令和out指令
  • 11.3 外部设备的中断请求
  • 11.4 通过中断实现实时处理
  • 11.5 能够快速传输大量数据的DMA
  • 11.6 显示字符和图像的原理
  • 第12章 如何让计算机“学习”
  • 12.1 什么是机器学习
  • 12.2 支持向量机
  • 12.3 Python交互模式的使用方法
  • 12.4 准备学习数据
  • 12.5 查看手写数字数据的内容
  • 12.6 通过机器学习识别手写数字
  • 12.7 尝试交叉验证
  • 附录1 亲手尝试C语言
  • C语言的特点
  • 变量与函数
  • 数据类型
  • 输入、运算、输出
  • 创建和使用函数
  • 局部变量与全局变量
  • 数组与循环
  • 其他语法
  • 附录2 亲手尝试Python
  • Python的特点
  • 一切皆对象
  • 数据类型
  • 输入、运算、输出
  • 创建和使用函数
  • 局部变量与全局变量
  • 数组与循环
  • 其他语法
  • 后记
  • 致谢
展开全部

评分及书评

4.3
8个评分
  • 用户头像
    给这本书评了
    4.0
    一本基础起步的编程百科

    作者只对最基础的原理进行了片枝半叶的讲解,适合简单了解

      转发
      评论
      用户头像
      给这本书评了
      3.0

      适合完全没基础的看看

        转发
        评论

      出版方

      人民邮电出版社

      人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。