计算机中的所有数据最终都以二进制表示。这一部分整理课程开头关于数据表示的内容:二进制与存储单位、字符编码、整数与浮点数的区别,以及 Python 中与之相关的写法。
位、字节与存储单位
计算机内部只有两种状态,通常用高、低电压表示,对应一位(bit)的 1 和 0。
- 一位数据为 1 bit。
1 Byte = 8 bits。1 KB = 1024 Bytes,1 MB = 1024 KB,1 GB = 1024 MB,依此类推。
CPU 读取内存中的内容,将其视作指令并执行。CPU 能处理的指令长度存在上限,这个上限由具体的机器决定。
字符编码:ASCII 与 Unicode
在键盘上,每一个按键在计算机内部都对应一个二进制序列。用于把字母、数字、符号映射到二进制代码的标准,最早是 ASCII(American Standard Code for Information Interchange)。
ord()把字符转换为对应的 ASCII 码。chr()把 ASCII 码转换回字符。
ASCII 只能表示有限的字符。现在通行的编码标准是 Unicode,它涵盖了中文等更多语言的字符。
数字的表示与进制
计算机中的数字分为整数(int)和浮点数(实数,float)。整数可以被完整、精确地存储,而浮点数只是近似保存。
在 Python 中书写不同进制的整数时:
- 默认是十进制。
0b前缀表示二进制,例如0b1010。0o前缀表示八进制。0x前缀表示十六进制。- 可以用下划线分隔数字而不影响计算,例如
1_000_000,方便阅读。
整数在机器中通常用补码表示。对整数的每一位取反记作 ~x,并且
浮点数并不精确,因此应当尽量避免在需要精确结果的地方使用浮点数:
a / b的结果总是浮点数。a // b只有在a、b都是整数时才输出整数。- 科学计数法写作
aeb,表示 (a不能省略)。
程序的基本结构与表达式
一个程序通常由变量定义、输入输出、条件判断、循环和函数组成。
Python 中的基本运算与比较:
- 四则运算:
+、-、*、/。 - 幂运算:
a ** b表示 。 - 比较运算返回
True或False:>、<、==、>=、<=、!=。
数值和字符串是不同的类型。123 是数字,而 "123" 是字符串。由于所有数据都是二进制,数字与字符串在内存中的编码并不相同,书写时必须区分。
字符串与转义字符
字符串是一串字符,用单引号或双引号标注,例如 "SJTU"、'上海交通大学'。
- 三引号
"""..."""或'''...'''可以格式化地输出多行文本;若想取消自动换行,可以在行末加\。 - 转义字符以
\开始,用来表示键盘上不直接定义的符号:\n换行,\t制表符,\\表示一个反斜杠。 - 在字符串前加
r可以关闭转义,例如print(r"a\a\a")会原样输出。
一点体会
课程里反复强调的一件事是动手尝试。语法可以被记住,但编程能力来自一遍又一遍地写、运行和调试。