(学习笔记)第2章 信息的表示和处理

文章目录


线索栏

  1. 现代计算机表示一切信息的基石是什么? 为什么选择它,而不是十进制?
  2. "位+解释" 这一核心模式如何让我们表示万物?
  3. 本章将重点研究哪三种最重要的数字表示/编码?它们分别用于表示什么?
  4. 整数运算和浮点数运算在数学属性上有何根本不同?根源是什么?
  5. 为什么程序员必须了解数据的位级表示和运算属性?(三个原因)
  6. (旁注)C语言有哪些主要标准版本?GCC如何指定编译标准?
  7. (旁注)阅读本章数学内容时,应采用什么方法?

笔记栏

本章核心:探究计算机如何用有限的二进制位表示数字(整数、实数),以及这些表示方式如何决定了运算的属性和局限性。

1.信息的基石:二进制位

1)事实

所有信息均以二值信号(位/Bit) 表示。

2)选择二进制的原因

(1)物理实现简单可靠:易于用物理状态表示(穿孔、电压、磁场方向)。

(2)电路简单可靠:使得超高密度集成成为可能(芯片上数十亿电路)。

3)"位+解释"模式

单独的位无用,但将位组合在一起并赋予解释,就能表示任何有限集合的元素(如数字、字符)。

2.三种核心的数字表示

(1)无符号编码:表示大于等于零的整数。

(2)补码编码:表示有符号整数(正、负、零)的最常用方式。

(3)浮点数编码:基于二进制科学计数法,近似表示实数。

3.计算机运算的特性与后果

1)有限性导致的溢出

用有限位表示数字,结果超出范围时会发生溢出,可能导致反直觉的结果。

例子:在32位int系统中,200 * 300 * 400 * 500 结果为负数 -884,901,888,但运算保持一致(满足结合律/交换律)。

2)整数 vs. 浮点数运算

(1)整数:表示范围较小,但精确。运算具有许多熟悉的整数算术属性(如结合律)。

(2)浮点数:表示范围大,但近似。运算不具有结合性等属性。

(3)例子:(3.14+1e20)-1e20 结果为 0.0,而 3.14+(1e20-1e20) 结果为 3.14。

4.程序员为何必须理解这些?

(1)正确性与可移植性:确保程序在所有数值范围和不同机器上行为正确。

(2)安全性:许多安全漏洞源于算术运算的微妙细节。

(3)理解底层代码:是学习机器级编程(第3章)和编译器优化的基础。

【旁注1:怎样阅读本章】

(1)方法:内容以"原理→示例与讨论→(推导)"的结构呈现。

(2)建议:重在建立直觉,理解原理和启示。初次阅读可跳过复杂推导,通过练习题巩固。

【旁注2:C编程语言的演变与编译】

(1)标准版本:贝尔实验室C → ANSI C (C89)→ ISO C90​ → ISO C99​ → ISO C11。后续大多向后兼容。

(2)GCC编译选项:用 -std= 指定标准,如 -std=c11。-ansi 指代 C90。


总结

本章开篇确立了计算机世界的根本表示法------二进制,并指出"位+解释"是构建一切数字表示的通用范式。核心任务是掌握无符号、补码、浮点数这三种将二进制模式映射到数学意义的编码方案。

关键认知在于:由于表示是有限的,计算机算术并非完美的数学运算。整数运算精确但可能溢出;浮点数运算范围大但是近似的,且不遵守结合律。这种"有限性"与"近似性"是程序中错误和安全漏洞的潜在根源。

因此,深入理解位级表示,是程序员编写正确、可靠、可移植、安全代码的必备基础,也是通往机器级思维的关键一步。旁注提供的阅读方法和语言背景,为后续的学习提供了实用的方法论和历史语境。

相关推荐
qq_284274052 小时前
机械原理笔记:平面机构自由度计算(复合铰链、局部自由度、虚约束)与四杆机构入门(含考点)
笔记·学习·平面·自动化·制造
qq_284274053 小时前
数控铣床与加工中心笔记:铣刀与刀柄系统、G54试切对刀、镜像加工指令、孔加工工艺(钻扩铰镗)与固定循环G73/G83/G81/G76/G87/G84
笔记·学习·自动化·制造
Titan20244 小时前
MySQL访问个人学习笔记
笔记·学习·mysql
小雪崩5 小时前
嵌入式学习 day64:字符设备驱动
学习
深圳老胡5 小时前
STM32CubeMX 生成 CMake 工程,用 VSCode 编译与调试的完整流程
笔记·stm32·单片机·代码规范
个 人 练 习 生5 小时前
C++ string 类模拟实现:从底层理解字符串(上)
开发语言·c++·经验分享·学习·程序人生
坤坤子吖5 小时前
C++智能指针:RAII、shared_ptr与内存泄漏
开发语言·c++·笔记·学习
乐橙开放平台6 小时前
智慧连锁客流检测和离岗检测怎么对接
大数据·人工智能·笔记·物联网·自动化·音视频·智能家居
零基础1236 小时前
FinalShell 使用教程:从安装到高效运维
运维·经验分享·笔记·finalshell
ACP广源盛139246256736 小时前
Type‑C 扩展坞方案选型笔记|国产 DP1.4 转 HDMI2.0 桥接芯片 GSV2201S @ACP评估
c语言·开发语言·笔记·硬件架构·硬件工程·国产芯片