【第二章:数据的表示和运算】

news2025/1/22 8:00:16

目录

  • 知识框架
  • No.0 引言
  • No.1 数制与编码
    • 一、进位计数制及其相互转换
    • 二、BCD码
    • 三、无符号的整数在计算机内部表示和运算
      • 1、表示
      • 2、加法、减法实现
    • 四、带符号的整数在计算机内部表示和运算
      • 1、表示
      • 1.1、原码表示
      • 1.2、原码形式实现加减法运算不行
      • 1.3 补码表示
      • 1.4 补码实现加法运算
      • 1.5、补码实现减法运算
      • 1.6、原码反码补码特性对比
      • 1.7、移码表示
    • 五、定点小数的表示和运算
      • 5.1、原码中定点整数和定点小数
      • 5.2、定点小数的反码补码表示
      • 5.3、定点小数的加减运算
  • No.2 奇偶校验码
  • No.3 算术逻辑单元(ALU)
    • 一、作用,大致原理
    • 二、加法器的实现
      • 1、一位全加器
      • 2、串行加法器
      • 3、并行加法器

知识框架

No.0 引言

探讨的两大主题:一步步递进

  1. 那么现在就需要探究 数据如何以2进制的形式在计算机中表示的呢??
  2. 那么还有就是计算机如何进行数据的算术和逻辑运算的??

No.1 数制与编码

一、进位计数制及其相互转换

我们平常使用的是10进制的数据,然而计算机能够识别的是2进制的01序列串。

主要是权重的不同。一方面符号表示权重,一方面符号的位置表示权重叫位权。比如975;

101001B、1652H、168D

  1. 其它进制数转换为十进制(不同的数码位在不同的位置有不一样的位权)
  2. 二进制<---->八进制、十六进制进行转换(三个二进制位进行组合、四个二进制位进行组合)
  3. 十进制转化为---->任意进制(整数和小数部分分别进行处理)。
  1. 真值和机器数;如果十进制数还带正负怎么办呢??如何在计算机中以2进制存储呢?
  2. 真值:符合人类习惯的数字
  3. 机器数:数字实际存到机器里的形式,正负号需要被“数字化”;0正1负。

二、BCD码

BCD码包括了三种即三种映射关系;那么引入BCD码是为了什么呢?

为什么说是二进制编码的十进制数?答:每四个比特的信息来对应上一个十进制位;

  1. 8421码:
  2. 余3码
  3. 2421码

三、无符号的整数在计算机内部表示和运算

无符号整数:即自然数=0+正整数:”0、1、2、3、4、、、、“

首先是没有符号,然后只是整数。

两个大问题:无符号整数,在计算机硬件中如何表示的呢?

​ :无符号整数,在计算机内部如何进行加法减法运算怎么用硬件实现的呢?

1、表示

第一个大问题:无符号整数,在计算机硬件中如何表示的呢?

  1. 假设机器字长是8位的前提下;(当然现实是机器字长通常是64位or32位的)
  2. 也就是说机器字长是限制了每次多少位数字的运算’下面均以是8位的为举例子。
  3. ①:全部二进制位都是数值位,没有符号位,第i位的位权是2^i-1.
  4. ②:n bit无符号整数表示范围0~2^n-1,超出则溢出,意味着该计算机无法一次处理这么多
  5. ③:可以表示的最小的数全0,可以表示的最大的数全1.

在这里插入图片描述

2、加法、减法实现

第二个大问题:无符号整数,在计算机内部如何进行加法减法运算怎么用硬件实现的呢?

  1. 计算机硬件如何做到无符号整数的加法呢?:从最低位开始,按位相加,并往更高位进位
  2. 在加法的时候也就是按照正常的二进制加法进行。而如果溢出的话也就会溢出截断了。

在这里插入图片描述

  1. 计算机硬件如何做到无符号整数的减法呢?:减法的话就不是平常那样了,要进行特殊处理
  2. ①”被减数” 不变 "减数”全部位按位取反、末位+1,减法变加法
  3. ②从最低位开始,按位相加,并往更高位进位(加法规则)
  4. ③最高位溢出丢弃,并不影响我们的结果。
  5. 那么为什么多此一举将减法变成加法呢???
  6. 因为:加法电路造价便宜,减法电路造价昂贵若可将减法转变为加法,所以将减法操作变成等价的加法操作,可以更省钱
  7. 那么为什么可以这样取反+1等就可以变化等价呢?这里是数论的知识了。

在这里插入图片描述

四、带符号的整数在计算机内部表示和运算

带符号整数:即整数:”-4、-3、-2、-1、0、1、2、3、4、、、、“

首先是有符号,然后只是整数。

两个大问题:带符号整数,在计算机硬件中如何表示的呢?

​ :带符号整数,在计算机内部如何进行加法减法运算怎么用硬件实现的呢?

​ 后面有个总结就是所有的带符号整数的运算都要先将原码转化为补码然后再进行运算。

1、表示

第一个大问题:带符号整数,在计算机硬件中如何表示的呢?

  1. 为什么带符号整数的表示有原码、反码、补码这些东西呢?
  2. 是因为在计算机内部我们表示一个带符号的数值的时候,同一个含义用不同的编码方式表示
  3. 当然不同的编码表示有各自的优点和缺点;

1.1、原码表示

首先带符号整数表示中现以 原码为例子:

  1. 假设机器字长是8位的前提下;(当然现实是机器字长通常是64位or32位的)
  2. 所以由于硬件的限制,那么带符号的整数表示的它的比特位位数是有上限的;
  3. 也就是说机器字长是限制了每次多少位数字的运算’下面均以是8位的为举例子。
  4. 符号位“0/1”对应“正/负”,剩余的数值位表示真值的绝对值
  5. ②若机器字长n+1位,带符号整数的原码表示范围: 一(2^n-1) ≤x ≤ 2^n-1
  6. ③真值0有两种形式:+0和-0 ,[+0]:=0,0000000;[-0]原 =1, 0000000

1.2、原码形式实现加减法运算不行

基于原码表示的有符号整数,如何实现加减法呢?

  1. 如果我们按照无符号的整数进行 从最低位开始往上加,按位相加(❌)。
  2. 但是我们在无符号的整数表示的时候最高位是表示的数值信息,但在这里是符号的信息。所以不行。
  3. 原码的缺点:符号位不能参与运算,需要设计复杂的硬件电路才能处理,费钱!贵!(也可以但是贵)
  4. 所以 科学家发明了这样的方法:用补码表示真值–符号位可以参与运算。(所以参与运算前都要转化为补码)
  5. 即我们在用原码进行实现加减法的时候不方便,所以要将原码的表示形式转化为等价的补码表示即可。

在这里插入图片描述

1.3 补码表示

如何进行补码的表示呢在计算机的硬件之中??

其实是 从原码转化过来的:原码–>反码–>补码

不管是原码、反码、补码、这三个的最高位都反映了符号位(0正1负),

所以可能转化为10000000吗这个形式?是的,当一个有符号数在二进制下的表示的最高位为1时,表示该数是一个负数。在进行原码转补码的时候,如果刚好进位到最高位,将会得到补码的最高位为1,即10000000。这个补码所代表的负数通常是最小的负数,也就是-128。因此,当进行原码转化为补码的时候,可能转换得到10000000这个形式。

只不过是补码的符号位可以参与运算。?

s

如何快速的将 原码和补码进行相互转换呢?两种方式:

第一种计算机中形式:那么计算机中硬件中是如何实现补码到原码的转换的呢?

计算机中是这样实现的:从补码出发,符号位不变,然后数值位取反,最后+1

第二种手动形式:如下图:

在这里插入图片描述

1.4 补码实现加法运算

  1. 从最低位开始,按位相加,(符号位参与运算),并且往最高位进位。
  2. 最后我们只保留更低的八位bit,最前边的一位给它丢弃。
  3. 最终得到的结果也是补码的形式,而想要知道数值为多少就需要将这个结果补码转化为原码。

在这里插入图片描述

1.5、补码实现减法运算

  1. 因为加法电路造价便宜,减法电路造价昂贵。若可将减法转变为加法,省钱!
  2. 那么怎么转呢?
  3. 即因为A-B=A+(-B); 然后将这些原码转化为补码然后进行加法运算,然后再将最终的补码结果转化为原码结果。
  4. 由于计算机在一开始就把所有的原码转化为补码了;
  5. 即“被减数(补码形式)”不变,【“减数(补码形式)”全部位按位取反、末位+1】变为[-B]补,减法变加法
  6. (补码形式)从最低位开始,按位相加,并往更高位进位。得到最终结果补码形式。

在这里插入图片描述

一个具体的带符号数的减法例子:

在这里插入图片描述

1.6、原码反码补码特性对比

下面的东西都是在 n+1 位bit的合法表示范围。

各种特性总结如下:

因为补码的那个最小负数转化为位数相同的原码是不可能的。因为范围限制。

在这里插入图片描述

溢出问题:关于两个数A和B进行某种运算后,是否发生溢出?―-手算做题可以带入十进制验证,是否超出合法范围

A=-64,B=-64;如果题目是 用 原码进行 讲述 的,那么最后结果保存用原码的话就会溢出;原码范围是-127~127;

而如果A和B都是补码的形式的话,那么最后结果保存是不会溢出的,因为补码范围是-128~127;

1.7、移码表示

那么怎么得到移码呢?

从补码得到:补码的符号位取反即可。

注意:移码只能用于表示整数(且是带符号的整数)

  1. 因为移码是从补码进行转化的,所以一些补码的特性就可以按照着来;
  2. 补码0的形式只有一种即0,00000000则[0]的移码就有一种:1,00000000
  3. 那么补码的 数据范围也是 -128~127(前提是n+1位的bit);

在这里插入图片描述

在这里插入图片描述

五、定点小数的表示和运算

定点的意思是什么呢?定点的意思是小数点的位置固定。

定点数:定点整数即带符号整数(也就是小数点的位置固定在了最后一位的右下角

​ :定点小数(也就是小数点的位置固定在了 符号位的右下角。

  1. 对于第一个大问题表示中,其实也只是臆想,不是一个bit位来存储的。简称规定。
  2. 定点整数的编码表示:原码、反码、补码、移码
  3. 定点小数的编码表示:原码、反码、补码

5.1、原码中定点整数和定点小数

下面的都是以8bit位来进行说明的。

小数点的位置不一样,导致的 各个bit“位权”不一样。

在这里插入图片描述

5.2、定点小数的反码补码表示

与带符号整数的 原码–》反码、补码的转化形式一模一样,

5.3、定点小数的加减运算

对两个定点小数A、B进行加法/减法时,需要先转换为补码

计算机硬件如何做定点小数补码的加法:

①从最低位开始,按位相加(符号位参与运算),并往更高位进位,

②然后再转

计算机硬件如何做定点小数补码的减法:

①“被减数”不变,“减数”全部位按位取反、末位+1,减法变加法;

②从最低位开始,按位相加,并往更高位进位

下面是定点整数和定点小数的比较:如下图:

在这里插入图片描述

小数补码的加法运算:也是先将各个转化为补码再看

反正无论是整数还是小数在进行加法运算的时候,都是要按照那个方法进行

因为计算机为了便宜,计算电路都是一样的,

在这里插入图片描述

No.2 奇偶校验码

因为在传输的过程中会出现 错误之类的,所以我们必须考虑到数据的校验

可能计算机元器件发生故障什么之类的,可能由于环境的因素噪音的干扰,可能会发生了位错误;01–00

那么我们该怎么才能发现错误呢?

下面是一种可以发现错误的编码机制:奇偶校验

  1. 校验原理:增加一个冗余的校验位bit
  2. 那么怎么检测出错误呢?
  3. 假设我们采用偶校验策略:一个bit发生跳变直接断定发生错误了,那么发生两个bit发生跳变呢?(检测不出来局限性)

在这里插入图片描述

No.3 算术逻辑单元(ALU)

一、作用,大致原理

下面是介绍的ALU的一些基本作用:

  1. 算术运算:加、减、乘、除等
  2. 逻辑运算:与、或、非、异或等
  3. 辅助功能:移位、求补等

二、加法器的实现

1、一位全加器

是有一个进位的计数的。

在这里插入图片描述

2、串行加法器

如何使用上面的一位全加器 如何实现 多位的加法。循环使用。像那个RNN样的图差不多。

在这里插入图片描述

3、并行加法器

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/522293.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享一个图片展示特效

先上效果图&#xff1a; 备注&#xff1a;这个效果图太大了&#xff0c;压缩了一下效果有点不咋好看。感兴趣同学们可以自己运行代码看一下&#xff0c;保证不会失望~ 再上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta cha…

mysql数据库的表操作 --3

表操作 3.1&#xff1a;创建表 语法&#xff1a; CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; 说明&#xff1a; field 表示列名 datatype 表示列的…

Java 数组与List转换

int[] 与 List<Integer> 转换 刷题常见 int[] 转 List<Integer> // int[] 转 List<Integer> int[] arr {1, 2, 3, 4, 5}; List<Integer> list Arrays.stream(arr).boxed().collect(Collectors.toList());解释&#xff1a; Arrays.stream(arr) /…

基于Ant DesignPro Vue + SpringBoot 前后端分离 - 部署后解决跨域的问题

基于Ant DesignPro Vue SpringBoot 前后端分离 - 部署后解决跨域的问题 通过Ant DesignPro Vue SpringBoot 搭建的后台管理系统后&#xff0c;实现了前后端分离&#xff0c;并实现了登录认证&#xff0c;认证成功后返回该用户相应权限范围内可见的菜单&#xff1b;但时将服务…

剑指 Offer II 105. 岛屿的最大面积代码注释

题目&#xff1a; 给定一个由 0 和 1 组成的非空二维数组 grid &#xff0c;用来表示海洋岛屿地图。 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合&#xff0c;这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0&#xff08;代表…

第一章 集合框架

文章目录 什么是集合框架集合接口Set和List的区别 集合实现类&#xff08;集合类&#xff09;集合算法 什么是集合框架 官方教程 Java 集合框架 Java Collection Framework &#xff0c;又被称为容器container&#xff0c;是定义在java.util包下的一组接口 interfaces和其实现…

【华为HCIP | 高级网络工程师】刷题日记(8)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大二在校生 &#x1f43b;‍❄️个人主页&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;落798. &#x1f54a;️系列专栏&#xff1a;零基础学java ----- 重识c语言 ---- 计算机网络 &#x1f413;每日一…

68.建立手风琴组件第一部分

本节目标 使用的文件 本次使用的文件可私信我获取&#xff0c;本次就只有两张图片 ● 我们导入两个照片至我们的项目文件夹&#xff0c;并新建一个HTML文件 ● 之后我们输入感叹号&#xff0c;让他自动为什么生成初始代码 ● 之后我们修改下title&#xff0c;导入字体、…

springboot+vue家具网站(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的家具网站。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&#…

kafka之消费者进阶

一、几个概念 1. 消费者组 消费者组&#xff1a;一个消费者组包含多个消费者。同一个消费组的消费者&#xff0c;分别消费不同的partition&#xff0c;便于加快消费。 kafka约定在一个消费者组中&#xff0c;对于同一个topic&#xff0c;每个consumer会分配不同partition&am…

Unity搭建VR全景图

VR全景图片显示和相机旋转 ** 如果需要内置面材质球文件&#xff0c;可以私信下我 ** 场景构建 创建项目后拖进所需文件 文件有内置面材质球、图片等 创建文件 拖拽内置面材质球进入场景&#xff0c;并设置相机在球内部 再创建一个材质球&#xff0c;命名和图片相同 选…

springcloud+springboot+vue学生信息管理系统(选课,成绩,奖惩,奖学金,缴费)xnt81

后端语言&#xff1a;Java 框架&#xff1a;springcloudspringboot 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 学生信息管理系统主要实现角色有管理员和学生,教师,管理员在后台管理学生模块、学籍信息模块、选择课程模块、用户表模块、收藏表模块、课程信息模块…

国产航顺HK32F030M: 448byte EEPROM

EEPROM (~Electrically Erasable Programmable read only memory~)是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。 HK32F030M用户手册V1.1.9.pdf bsp_eeprom.c #include "bsp_eeprom.h"/*****************************************************…

springboot+vue房产销售平台(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的房产销售平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&a…

切换以太网接口MAC地址的批处理脚本

MAC&#xff08;媒体访问控制&#xff09;地址是网络设备的唯一标识符&#xff0c;用于网络通信。MAC 地址通常在设备制造时被分配并写入硬件。然而&#xff0c;在某些情况下&#xff0c;你可能需要或想要更改设备的 MAC 地址。以下是一些可能的理由&#xff1a; 1. **隐私和安…

Linux期末复习总结

一、Linux基础及安装 LINUX是在UNIX基础上开发,具有UNIX全部功能。 **Linux特点&#xff1a;**开放性、多用户、多任务、出色的稳定性、良好的用户界面、设备独立性、丰富的网络功能、安全性、可移植性 Linux由4个主要部分组成&#xff1a;内核、Shell、文件系统、应用程序 …

【Python入门篇】——Python中循环语句(while循环的基础语法和基础案例)

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; Python入门&#xff0c;本专栏主要内容为Python的基础语法&#xff0c;Python中的选择循环语句…

如何获得高并发经验?看这篇文章就够了

如何获得高并发经验&#xff1f; 这是我今天逛知乎的时候系统邀请我回答的一个问题&#xff0c;由此也引发了我的一些思考&#xff1a;为什么人人都想要获得高并发经验&#xff1b;想拥有高并发系统设计技能&#xff1f; 其原因LZ认为主要有以下三点&#xff1a; 涨薪&#x…

MD-MTSP:麻雀搜索算法SSA求解多仓库多旅行商问题(提供MATLAB代码,可以修改旅行商个数及起点)

一、多仓库多旅行商问题 多旅行商问题&#xff08;Multiple Traveling Salesman Problem, MTSP&#xff09;是著名的旅行商问题&#xff08;Traveling Salesman Problem, TSP&#xff09;的延伸&#xff0c;多旅行商问题定义为&#xff1a;给定一个&#x1d45b;座城市的城市集…

【C++】内联函数----inline函数的详细使用教程

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…