📔 Lecture02 Number Representation
更新日期:2023.11.02
1. 概述¶
通常数据始于模拟域,然后将其转换为数字域。
为了将模拟数据转换为数字数据,必须要做两件事情:
- 数据采样
- 对于每个时间步骤上都进行标注访问(一般是一个固定的间隔)。
- 数据量化
- 对于每秒钟访问多少次,这就是高度,对于幅度来说,通常是对其进行量化,然后通过某种标准衡量其振幅。
这也是将模拟数据输入到计算机系统中的方式。但与此同时,并不是所有的数据都是模拟数据。例如创作出来的艺术、音乐、视频、图片等。
该部分中比较重要的思想:位(Bits)可以表示任何东西
。例如:
-
字符
- 26个字母
- 大小写字母和标点符号(7 bits (in 8) ("ASCII"))
- 涵盖世界上所有语言的标准代码(8,16,32 bits(“Unicode”))
- 对于表情包来说,也是属于Unicode的部分
-
逻辑值
- 0(False)
- 1(True)
-
颜色
- 位置/地址
- 命令
记住:N bits ⇔ at most 2^N th
2. 二进制、十进制和十六进制和进制转换¶
如果不写任何基数的情况下,默认的基数就是10。
在日常生活中使用十进制表示数制,但在计算机中使用二进制位来表示所有信息。
2.1 十进制¶
2.2 二进制¶
2.3 十六进制¶
2.4 十进制与二进制互转¶
2.5 十进制与十六进制互转¶
2.6 使用进制的问题¶
- 十进制
- 人类能理解的表示方式,特别是人类算术计算。
-
十六进制
- 如果需要查看长串二进制数字,就直接转换为十六进制,会比直接查看4位/符号要容易。
-
二进制
- 可以在计算机中,对所有数字进行乘法、除法等任何运算。
- 在计算机系统中,常见的晶体管只有两种状态(开和关),就是使用二进制。
对于进制的使用,一般会在数字的下标标注基数,或者使用前缀或者后缀的方式表明,从而避免代码或者读写的歧义问题。
2.7 代码实例¶
3. 正负数表示¶
对于数字来说,可以用来进行运算:
- 加法
- 减法
- 乘法
- 除法
- 比较
例如十进制数相加的例子:10 + 7 = 17。那么二进制的简单加法可以使用电路实现。
思考题:如何使用二进制表示的方式测试一个数字是否大于另一个数字?
二进制位就是简单的数字抽象的表示。
溢出:如果进行一个运算时,结果无法必须存储到已分配的位数中时,称为 溢出(overflow)
。
3.1 负数的表示¶
3.2 补码表示¶
4. 说明¶
- 本部分的知识点紧凑,所以可以参考《南京大学 袁春风 计算机系统基础》