数据的底层表示形式 - 二进制。
- 存在不同的编码集,比如ASCII 码(American Standard Code for Information Interchange,美国信息交换标准代码),8位的二进制足以表示所有的英文字母,还有UTF8。
- 相应的,如何编码,就需要如何解码。
为什么选用二进制来进行底层的表达?
古代时期,烽火台,信号(短信号 + 长信号)
现代,电路,简单的蜂鸣器,长短声
如何实现长距离传输?继电器
- 计算机领域,最基本的是简洁的,分层 + 组合
二进制的计算是如何完成的?
- 最基本的逻辑运算:“与(AND)”“或(OR)”“NOT(非)”和“异或(XOR)”
- 如何实现最基本的加法运算,异或 – 基本位运算,与 – 进位标志
- 以上,是不带进位的运算,半加器
- 全加器,带上进位符号的运算,两个半加器加上一个或门
- 分层思想:门电路 - 半加器 - 全加器 - 加法器 - ALU
- 乘法器: 加法 + 位移
- 门延迟:一个全加器计算是有延迟时间的,如何每位计算均以来上一位,要等很久
- 时钟频率,假设中间结果存放在寄存器,跟着时钟频率走
- 如何去减少这种电路中的延迟,进行电路展开
- 两种方式,门电路和寄存器较少,延迟高,or,门电路寄存器多,延迟少 -RISC or CISC
如何表达小数?定点数和浮点数
- 定点数,BCD编码,指定哪几位代表整数部分内容,哪几位代表小数部分内容
- 浮点数:一个符号位 + 8 个比特组成的指数位 + 23 个比特组成的有效数位
- 浮点数的加法运算,先对齐位数,再进行加法运算
- 潜在问题:精度损失,进行位移的时候有可能丢失有效小数
- 相关的算法:Kahan Summation