本 Wiki 开启了 HTTPS。但由于同 IP 的 Blog 也开启了 HTTPS,因此本站必须要支持 SNI 的浏览器才能浏览。为了兼容一部分浏览器,本站保留了 HTTP 作为兼容。如果您的浏览器支持 SNI,请尽量通过 HTTPS 访问本站,谢谢!
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
cs:comp_n_arch:courses:fnti_i:week_2 [2024/04/17 12:53] – [Decimal to Binary] codinghare | cs:comp_n_arch:courses:fnti_i:week_2 [2024/04/17 13:58] (当前版本) – [Signed Bit(原码)] codinghare | ||
---|---|---|---|
行 31: | 行 31: | ||
\\ \\ | \\ \\ | ||
====Binary Addition==== | ====Binary Addition==== | ||
+ | 二进制的加法与十进制类似,按位相加: | ||
+ | \\ \\ | ||
+ | {{ : | ||
+ | \\ \\ | ||
+ | 如果遇到 '' | ||
+ | \\ \\ | ||
+ | {{ : | ||
+ | ===overflow=== | ||
+ | 如果最后一位相加也需要进位,此时结果长度超出了字的长度。我们称该情况为加法溢出(// | ||
+ | ===Adder 的设计=== | ||
+ | 从这个思路出发,Adder 的设计分为: | ||
+ | * Half Adder:负责两个 Bit 的相加 | ||
+ | * Full Adder:负责三个 Bit,即两个 Bit 与 carry 的相加 | ||
+ | ==Half Adder== | ||
+ | //Half Adder// 完成的工作是将两个 Bits 相加。那么: | ||
+ | * 输入:两个 bits | ||
+ | * 输出:一个 bit (和),一个 carry(进位) | ||
+ | 需要注意的是,两个 Bits 相加只和当前的 Bit 有关。只要是 '' | ||
+ | \\ \\ | ||
+ | {{ : | ||
+ | ==Full Adder== | ||
+ | //Full Adder// 完成的工作是将两个 Bits 与 carry 位相加: | ||
+ | * 输入:bit a, b, c | ||
+ | * 输出:sum, | ||
+ | 其真值表也非常容易得到: | ||
+ | \\ \\ | ||
+ | {{ : | ||
+ | ==Multi-bit Adder(16bits)== | ||
+ | 这个 adder 由一系列的 half adder 和 full adder 组成。准确的来说,是 15 个 full adder 与 1 个(最右边的)half adder 组合在一起,组成了 16 bits 的,带进位的加法计算器。 | ||
+ | ====Negative Numbers==== | ||
+ | 表示负数的方式有三种: | ||
+ | * signbit(原码) | ||
+ | * Complement (补码) | ||
+ | ===Signed Bit(原码)=== | ||
+ | 这种方式使用二进制的最高位作为符号位,以此来区分正负数。其他位不变,比如: | ||
+ | <code cil> | ||
+ | 000 -> 0 100 -> -0 | ||
+ | 001 -> 1 101 -> -1 | ||
+ | 010 -> 2 110 -> -2 | ||
+ | 011 -> 3 111 -> -3 | ||
+ | </ | ||
+ | 这种方法通常不会采用,有几个大的缺点: | ||
+ | * '' | ||
+ | * 加减法无法处理。比如 '' |