ENGG1310 P2.2 Data, Logic Gates & Binary Computation

课程内容笔记,自用,不涉及任何 assignment,exam 答案
Notes for self-use, do not include any assignments or exams

Data Representations

这里可以和前面介绍的数字信号/模拟信号进行联系
在这里我们将介绍数据的两种表征方式 (data representation): Analogue (模拟)Digital (数字)

  • Analog Data
    Analog Data 在时间轴上取值连续 (continuous)

    现实生活中的大部分数据,例如气压,亮度,湿度,温度等等,都是 analog 的
    Analog System 可以储存或处理 Analog Data

  • Digital Data
    Digital Data 在时间轴上取值离散 (discrete),且在不同的时间单元上取值不同

    在电脑内部进行存储与处理的数据几乎都是 Digital Data (更具体的说,是 Binary Data)

  • Digital Abstraction
    Digital Abstraction 将所有的信号抽象成两个离散值 (2 discrete values),一般是 \(0/1\) (True/False)
    这样的好处是


  • Analog-to-Digital Conversion
    实际中的数据大多是 Analog 的,然而电脑只能处理 Digital 的数据
    为了令电脑能储存并处理 Analog 的数据,我们需要将 Analog Data 转为 Digital Data
    我们通过 SamplingQuantization 来实现这个过程

    Sampling 是指,recording an analog signal at regular discrete units of time (例如,每 \(3\) 秒记录一次)
    Quantization 是指,将所有的 analogue value 映射到一个有限的 digital value set 中去

  • Analog-to-Digital Converter (ADC)
    一个能够对 Analog Data 进行 Sampling 与 Quantization,并将其转化为 Digital Data 的装置,被称为 Analog-to-Digital Converter (ADC)

    1-bit ADC 将 Analog Data 转化为 Binary Data
    ADC 将决定 Binary Data \(0/1\) 所代表的

    • logical states:例如 \(0/1\) 代表 高/低,冷/热,关/开
    • output voltage:在实际的电路设计中,\(0/1\) 将被两个不同的电压表示,一般来说,\(0\)\(1\) 的代表电压分别是 minimum/maximum allowable voltage


    在 Analog-to-Digital 的转化过程中,无论是 sampling 还是 quantization 都会造成信息的错误与丢失 (errors & loss of information)
    转换之后的信息与原信息的差异被称为 quantization error/noise (量化错误/量化噪声)
    虽然 ADC 会导致 loss of information,但是 digital data processing 有其独特的优越性


  • Digital-to-Analog Converter (DAC)
    DAC 将 Digital Data 转化为有着连续物理性质的 Analog Data
    例如耳机:其接收到的数据是 Digital Data,但输出的是表现为 Analog Data 的声音


Binary Computation

  • Binary Representation
    二进制数据 Binary Data 由若干个 \(0\)\(1\) 表示:这些数字也被称为 比特 (bits) (bits 是 binary digits 的缩写)
    binary/logic value \(0\) 被 low voltage 所代表 (\(0-0.5V\) 或接地)
    binary/logic value \(1\) 被 high voltage 所代表 (\(5-5.5V\))

  • Binary Digits: Bits
    一个二进制数 binary digits 被称为 比特 bits,它是电脑系统中最基础的信息单元
    一个比特只能代表 \(1/0\),其所对应的 electrical status 是开或者关

  • Binary numbers
    binary numbers (二进制数) 以 比特串 (bit-string) 的形式表示
    文本,图像这些数据类型均可用比特串进行表示,之后在计算机中进行存储与处理
    一个长度为 \(n\) 的比特串可以表示 \(2^n\) 个不同的值
    所有现代计算机均 work on binary numbers of data

  • Binary Coding 二进制编码
    一个二进制编码方案必须满足以下要求

    • Uniqueness:不同的值必须被不同的二进制编码表示
    • Standardization:二进制编码方案必须是标准化的,这样才能在不同的环境下进行应用
    • Compatibility
  • Representation of Decimal Numbers
    公式 \(\sum_{i=0}=B^{i}d_i\)
    其中 \(B\) 被称为 base number,迭代的 \(i\) 被称为 \(d_i\)position number,这种表达方式被称为 positional-value (PV) system
    \(i\) 由 least significant digit (最右侧) 迭代到 most significant digit
    任意 \(B\) 进制的数转换为十进制都遵循这一规律

  • Decimal to Binary/Hex
    短除法,在 remainder < base 条件下结束
    通过短除法得到的结果:所有的 remainder 由下至上写出来

  • Binary \(\iff\) Hexadecinal
    二进制数和十六进制数之间的转换遵循这样的规则:
    由右到左 (即从 least significat digit 到 most significant digit) 分解,
    若二进制转十六进制,则 四位一组,并将这四位二进制数写成对应的一位十六进制数 (若到左端的 MSD 凑不到四个,则补上前缀 \(0\))
    若十六进制转二进制,则逐位将一位十六进制数写成对应的二进制数


Number representation

感觉是这堂课中为数不多的干货内容,,,趁着机会好好了解下二进制数的负数表达

  • Unsigned number
    一个 \(n\) 位的比特串可以表示 \([0,2^{n-1}]\) 中的所有无符号整数 (unsigned number)

  • Signed number
    下面我们介绍三种计算机处理符号的方式,分别有

    • Sign-Magnitude 符号-大小法
    • 1's complement 反码法
    • 2's complement 补码法

    其中,现代的所有计算机都是采用 补码法 2's complement 来表达负数

  • Sign-Magnitude 原码
    将比特串的 Most Significant Bit (MSB) 作为符号位 (sign bit),负数取 \(0\),整数取 \(1\)
    例:\(\{1110\}_2=-6, \{0110\}_2=6\)
    在 Sign-Magnitude 表示法下,一个 \(n\) 位的比特串可以表示数的范围是 \([-(2^{n-1}-1), 2^{n-1}-1]\)
    这一表示法虽然最便于人类理解,但是对于机器而言,实现一些运算显得很复杂 (这是符号位的缘故),以加法为例

    (当 \(A,B\) 符号不同时,考虑 \(4\) 种情况,\(2\) (\(A,B\) 的正负号情况) \(\times 2\) (\(|A|, |B|\) 的相对大小情况))
    并且对于 \(0\) 将会有两种表达:\(+0\)\(-0\)

  • 1's complement 反码
    为了将减法转化为加法,反码出现了:我们知道对于 \(n\) 位二进制数,减去某个数 \(x\) 等于加上 \(2^{n}-x\)
    然而在计算 \(2^n-x\) 的过程中仍然要用到减法;幸运的是,对于二进制表示,对 \(x\) 取反码 \(\overline{x}\) 实际上等于 \(2^{n}-1-x\)
    反码表示法应运而生:对于正整数,其反码等于自身原码;对于负整数,其反码等于其原码除符号位以外的所有位数翻转
    例:\(\{00010111\}_2=23_{1's}, \{11101000\}_2=-23_{1's}\)
    同样,在 1's complement 表示法下,一个 \(n\) 位的比特串可以表示的数的范围是 \([-(2^{n-1}-1), 2^{n-1}-1]\)
    反码表示法用来运算加法简单一些:

    但是,这种方法对于 \(0\) 仍然有两种表达 \(+0=\{0...0000\}_2\)\(-0=\{1...1111\}\)

  • 2's complement 补码
    在反码表示的加法中,我们仍然要通过讨论是否进位对结果进行修改 \(+1\);这是由于 \(\overline{x}=2^{n}-1-x\)
    那么如果我们定义补码 \(\widetilde{x}=2^{n}-x\),在进行加法时就无需修改结果了:因此 \(\widetilde{x}=\overline{x}+1\)
    对于正整数,其补码等于自身原码;对于负整数,其补码等于其反码 \(+1\)
    例:对于 \(-7\),我们先写出它的原码 (4-bit 二进制表示) \(\{1111\}_2\),再对除了符号位外的所有位取反 \(+1\) 获得 \(\{1001\}_2\)
    对于负整数补码,我们如何得到其原码:只要再进行一次求补 (取反 \(+1\)) 即可
    补码表示法可以直接将减法变为加法,其运算最简单 (减去一个数相当于,加上一个负数,相当于加上该负数的补码)

    接下来我们对 \(n\) 位二进制补码表示法能表示的数的范围进行研究
    在原码与反码表示中,\(0\) 由于符号不同有两种表示 \(+0\)\(-0\),这明显很不自然
    而在补码表示中,我们尝试求 \(+0\)\(-0\):显然,\(+0=\{00...0_n\}\)
    而对于 \(-0\),我们先写出其原码 \(\{100...0_n\}\),在求反码 \(+1\):此时我们发现会得到一个长度为 \(n+1\) 的串 \(\{100...0_{n+1}\}\)
    由于二进制只有 \(n\) 位,MSB 将会被舍弃,于是我们又得到了 \(\{00...0_n\}\):补码完美解决了 \(0\) 有两种表示 \(+0\)\(-0\) 的问题
    那么,\(\{100...0_n\}\) 的意义便产生了空缺
    根据 \(-(2^{n-1})=(-1)+(-(2^{n-1}-1))=\{10...01\}_{0's}+\{11...11\}_{0's}=\{11...11\}_{2's}+\{10...01\}_{2's}=\{10...0\}_{2's}\) (这里同样溢出了一位 \(1\))
    我们规定 \(\{100...0_n\}\) 作为 \(-2^{n-1}\) 的补码 (由于该补码原来是用来表示 \(-0\) 的,我们指定其意义为 \(-2^{n-1}\),因此 \(-2^{n-1}\)\(n\) 位二进制下没有原码和反码,只有补码)
    所以,在 2's complement 表示法下,一个 \(n\) 位的比特串可以表示的数的范围是 \([-2^{n-1}, 2^{n-1}-1]\),比原码或反码表示法多一个最小值 \(-2^{n-1}\) (这是由于 \(-0\) 空出的位置)

  • 总结

    对于某一个 \(n\) 位二进制 pattern,若
    求 unsigned values: base-position 法
    是原码,求对应值:MSB 决定符号,剩余的 \(n-1\) 位进行 base-position 法
    是反码,求对应值:MSB 决定符号,剩余的 \(n-1\) 位先取反,得到原码后再进行 base-position 法
    是补码,求对应值:MSB 决定符号,剩余的 \(n-1\) 位先取补 (取反 \(+1\)),得到原码后再进行 base-position 法;特殊的,若补码形式是 \(\{100...0\}\),则对应值为 \(-2^{n-1}\)


Logic Gate 逻辑门

同样也有很多干货,介绍了基础的逻辑门

  • The primitive - Logic Gate
    逻辑门是对二进制数字信号的最基础控制
    基础逻辑门接受 \(1\)\(2\) 个信号,输出 \(1\) 个信号 (complex 逻辑门可接受 \(> 2\) 个信号,但输出信号只有 \(1\) 个)

    所有的逻辑运算都能用三个特征表示:真值表 Truth Table,示意图 Schematics 与布尔表达式 Boolean Expression

  • Truth Table 真值表
    真值表描述对于所有输入,某个布尔函数的所有输出
    All possible combinations of inputs are listed.
    A truth table uniquely and completely describes a Boolean function.

  • 非门 NOT gate

  • 与门 AND gate

  • 或门 OR gate

    注意自然语言中的 "或" 与逻辑语言中的 "或" 的区别

  • Other Simple Gate
    注意,所有的逻辑函数 (logic function),无论多复杂,都能被 非门,与门,或门 三个基本逻辑门进行表示

    • 异或门 XOR gate
    • 与非门,或非门 NAND,NOR

      与门与非门结合,或门与非门结合
      很好理解,与非门,或非门的真值表与与门,或门恰好相反;注意示意图中的泡泡 bubble 是非门的特征
  • Combinational Functions
    复杂的函数能由简单的函数复合而成
    我们定义一个函数是 可复合的 combinational 当且仅当它符合以下的条件

    • 所有组成它的函数是 combinational 的
    • There is no loop in the combination
      所谓 loop 循环,就是指某个输出的信号同时又作为输入产生它自身;下面的这个函数有 loop
    • 任何一个输入信号只参与产生一个输出信号 (只能多对一,不能一对多)
      下面的这个函数,\(a\)\(b\) 同时参与了两个信号的产生,因此不是 combinational 的
  • Hierarchy
    直接当成程序里的函数就行了,很好理解:一个函数的输出可以作为另一个函数的输入
    函数之间的依赖关系形成了一个 hierarchy


  • Precedence 优先级
    布尔运算中存在以下的优先级 非-与-或 (与对应乘法 \(\times\),或对应加法 \(+\))

    非 NOT 的表示是上划线:例如 \(\overline{A}\) 表示非 \(A\);且,上划线隐式的携带一个括号,例如 \(\overline{A+B}\) 实际上代表的是 \(\overline{(A+B)}\) 即,先计算 \(A\)\(B\) 再对整体取非

posted @ 2023-03-06 18:14  四季夏目天下第一  阅读(132)  评论(0编辑  收藏  举报