计算机组成原理的学习笔记(2)--数据表示与运算·其二 逻辑门和加减乘

学习笔记

前言

本文主要是对于b站尚硅谷的计算机组成原理的学习笔记,仅用于学习交流。

1. 逻辑门

逻辑门是数字电路中用于执行基本逻辑运算的组件。每种逻辑门都有独特的功能和特性:

  • 与门(AND Gate)

    • 符号:·&

    • 功能:输出为 1 当且仅当所有输入均为 1。

  • 或门(OR Gate)

    • 符号:+

    • 功能:只需一个输入为 1,输出即为 1。

  • 非门(NOT Gate)

    • 符号:¬!

    • 功能:输出为输入的反转,¬A!A 表示 A 的反转。

  • 异或门(XOR Gate)

    • 符号:

    • 功能:输入不同(一个为 1,一个为 0)时,输出为 1;相同(两个都是 1 或两个都是 0)时,输出为 0。

  • 与非门(NAND Gate)

    • 符号:¬(A · B)

    • 功能:与门的输出反向,即 AB 都为 1 时,输出为 0,否则为 1。

  • 或非门(NOR Gate)

    • 符号:¬(A + B)

    • 功能:或门的输出反向,即 AB 都为 0 时,输出为 1,否则为 0。

  • 同或门(XNOR Gate)

    • 符号:

    • 功能:输入相同时(都为 1 或都为 0),输出为 1,否则输出为 0。


2. 全加器(Full Adder)

全加器是数字电路中进行二进制加法的基本单元。

  • 输入

    • A:第一个加数。

    • B:第二个加数。

    • Cin:进位输入。

  • 输出

    • S:和(Sum),表示当前位的结果。

    • Cout:进位输出,表示是否需要进位到下一个位。

  • 逻辑公式

    • S = A ⊕ B ⊕ Cin

    • Cout = (A · B) + (Cin · (A ⊕ B))


3. 多重分组全加器

前置概念

  1. 组内并行

    • 意思是在同一组内的多个任务可以同时进行,即多个处理单元或线程可以并行处理不同的数据。例如,在一个计算任务中,可以将数据分成多个部分,然后在多个处理器上同时处理每一部分。
  2. 组间串行

    • 意思是在不同组之间的任务执行是串行的。这意味着一组的计算结果需要在另一组开始执行之前完成。例如,计算 A 组的结果需要在 B 组开始之前完成。

分组加法

  • 在进行较大位数的加法时,可以将加法任务分成多个较小的组(例如每组 4 位或 8 位),然后为每组分别使用全加器进行处理。这样可以提高电路的并行性和计算效率。

  • 每个小组的进位由全加器处理,同时不同组之间的进位需要传递并进行处理。这通常需要额外的逻辑电路来管理进位的传递和计算。


4. 算术移位

  • 算术左移:将所有位向左移动,最右侧补零,等于乘以 2 的 k 次方。对于无符号数和有符号数,效果是一样的。

  • 算术右移:用于有符号数,根据符号位补充左侧,保持数的符号,可以理解为 C 语言中的右移操作符。对于正数,左侧补 0;对于负数,左侧补 1。


5. 溢出判定

溢出发生在运算超出数据类型表示范围的情况下。

  • 有符号整数

    • 加法溢出(A > 0 && B > 0 && S < 0) || (A < 0 && B < 0 && S > 0)

    • 减法溢出(A < 0 && B > 0 && S > 0) || (A > 0 && B < 0 && S < 0)

  • 无符号整数

    • 加法溢出S < A || S < B

    • 减法溢出A < B


6. ALU(算术逻辑单元)

ALU 是计算机的核心部件,负责所有算数和逻辑运算。

  • 功能

    • 执行加法、减法、逻辑运算(与、或、非)等。

    • 可以执行移位操作、乘法、除法和比较运算等(某些 ALU 还包括这些功能)。

  • 组成

    • 多个逻辑门和运算单元、输入输出寄存器。
  • 标志位

    • 利用状态寄存器的标志位来反馈运算结果(如零标志、进位标志、溢出标志等)。

7. 部分积乘法

部分积乘法是计算乘法的一种方法,通过逐位计算来形成结果。

  • 步骤:

    1. 将乘数的每一位与被乘数相乘,生成部分积。

    2. 对部分积进行移位和累加。

    3. 部分积移除的位会移动到乘数中,乘数中已操作的位不再使用,直接移除。


8. ACC 和 MQ 在乘法中的作用

  • ACC(累加器)

    • 存储中间结果和部分积,最终乘积的结果。
  • MQ(乘数寄存器)

    • 存储乘数,用于与被乘数组合生成部分积。

结语

关于逻辑门之类的知识我之前并没有学习过,我看到逻辑门的时候就去看了一些关于逻辑门的知识,我觉得这位up主对初学者比较友好,在此处推荐一下,另外本文对于尚硅谷的计算机组成原理视频中所涉及的比较重要的知识点,在这里记下笔记,以备后续复习,如有需要自取。

其他

另外提一嘴,最近脚骨折,去不了图书馆,只能呆在寝室,感觉学习效率好低下,各位一定要保重自己的身体啊。

相关推荐
ThisIsClark8 分钟前
【gopher的java学习笔记】Java中Mapper与Entity的关系详解
java·笔记·学习
scdifsn9 分钟前
动手学深度学习11.6. 动量法-笔记&练习(PyTorch)
pytorch·笔记·深度学习
安冬的码畜日常13 分钟前
【Vim Masterclass 笔记25】S10L45:Vim 多窗口的常用操作方法及相关注意事项
笔记·vim·自学笔记·vim多窗口·vim子窗口·vim水平分割·vim垂直分割
m0_5480497014 分钟前
SpringCloud学习笔记【尚硅谷2024版】
笔记·学习·spring cloud
羊小猪~~16 分钟前
深度学习基础--LSTM学习笔记(李沐《动手学习深度学习》)
人工智能·rnn·深度学习·学习·机器学习·gru·lstm
我是聪明的懒大王懒洋洋16 分钟前
dl学习笔记:(7)完整神经网络流程
笔记·神经网络·学习
USER_A00141 分钟前
JavaScript笔记进阶篇01——作用域、箭头函数、解构赋值
javascript·笔记
_Eden_2 小时前
Docker入门学习
学习·docker·容器
次元工程师!2 小时前
JAVA-IO模型的理解(BIO、NIO)
java·笔记·学习·nio·bio·io模型
mit6.8242 小时前
[实现Rpc] 项目设计 | 服务端模块划分 | rpc | topic | server
网络·c++·笔记·rpc·架构