计算机组成原理 2 数据表示

机器数

        研究机器内的数据表示,目的在于组织数据,方便计算机硬件直接使用。

        需要考虑:

        支持的数据类型;

        能表示的数据精度;

        是否有利于软件的移植

        能表示的数据范围;

        存储和处理的代价;

        ...

  •         真值:符号用“+”、“-”表示的数据表示方法。
  •         机器数:符号数值化的数据表示方法, 用0、1表示符号。

        三种常见的机器数:(设定点数的形式为X_0X_1...X_n)         

         原码

  • 表示简单
  • 运算复杂:符号位不参加运算,要设置加法、减法器。
  • 0的表示不唯一
  • [X]原 + [Y]原 (不能直接判定是执行加法还是减法运算,分同号和异号)

        反码 

  •         表示相对原码复杂
  •         运算相对原码简单:符号位参加运算,只需要设置加法器,但符号位的进位位需要加到最低位。
  •         0的表示不唯一

        补码

  • 表示相对原码复杂
  • 0的表示唯一
  • 运算简单:只需设置加法器。
  • 补码中模的概念 (符号位进位后所在位的权值)

        移码(增码)

  • 移码表示浮点数的阶码,IEEE754中阶码用移码表示。
  • 具体实现:数值位与X的补码相同,符号位与补码相反。
  • 设定点整数X的移码形式为X_0X_1...X_n则移码的定义是: 2^n + X (X为真值,n为X的整数位位数) 

定点与浮点数据表示 

        定点数据表示

  •         可表示定点小数和整数
  •         表现形式:X_0.X_1X_2...X_n
  •         定点小数表示数的范围(补码为例): -1\le x \le 1-2^{-n}
  •         定点整数表示数的范围(补码为例):-2^n \le x \le 2^n-1
  •         定点数据表示数的不足:数据表示范围受限

        浮点数据表示 

        把数的范围和精度分别表示的一种数据表示方法。

        使用场合:当数的表示范围超出了定点数能表示的范围时。 

        一般格式

        E_s:E_1E_2...E_n M_s:M_1M_2...M_k\rightarrow N=2^e\cdot m

                E: 阶码位数,决定数据的范围

                M: 尾数位数,决定数的精度 

        例如,将x =2^{-01}\times(-0.1110)表示成机器形式。假定用8位表示该数,且阶码占3位,位数占5位(均包含一位符号位)。 

        答案是1 1 1 1 0 0 1 0

        一般表示格式的不足:不同系统可能根据自己的浮点数格式从中提取不同位数的阶码 

        IEEE 754格式        

        IEEE 754是一种定义了浮点数表示和运算标准的国际标准。该标准规定了浮点数的二进制表示、舍入规则、溢出处理等方面的细节,以确保在不同计算机系统之间实现浮点数的一致性。

        IEEE 754浮点数的表示形式分为单精度(32位)和双精度(64位)两种。

        IEEE 754浮点数的基本结构包括三个部分:符号位、指数部分和尾数部分

S8位偏指数E23位有效尾数M单精度
S11位偏指数E52位有效尾数M双精度

        IEEE754尾数形式为1.XXXXXX,其中M部分保存的是XXXXXX(1被隐藏),从而可保留更多的有效位,提高数据表示的精确度。

        与上述IEEE754格式相对应的32位浮点数的真值可表示为:

        N=(-1)^S\times2^{E-127}\times 1.M

        IEEE 754浮点数标准还规定了特殊值,如正无穷、负无穷、NaN(Not a Number)等,以及舍入规则、精度要求等细节:

        E=0 , M =0 :表示机器零;

        E=0 , M ≠0 :非规格化的浮点数;

        1≤ E ≤ 254 :规格化的浮点数;

        E=255 , M=0 :无穷大的数,对应于x / 0 (其中x≠0) ;

        E=255 , M≠0 :N=NaN,表示一个非数值,对应于0 / 0。 

IEEE754 32位浮点数与对应真值之间的变换流程 

        例如要将十进制数20.59375转换成32位IEEE754格式浮点数的二进制格式。

        解:

                先将十进制数换成二进制数: 20.59375=10100.10011

                移动小数点,使其变成1.M的形式 10100.10011=1.010010011×2 4

                得到: S=0, e = 4,E= 100+01111111 =10000011,M = 010010011

                最后得到32位浮点数的二进制存储格式为:

                0100 0001 1010 0100 1100 0000 0000 0000 = 41A4C000H 

 数据校验的基本原理

         必要性

                受元器件的质量、电路故障或噪音干扰等因素的影响,数据在被处理、传输、存储的过程中可能出现错误;

                若能设计硬件层面的错误检测机制,可以减少基于软件检错的代价。

        校验的基本原理 

                 增加冗余码(校验位)

        码距 

        同一编码中,任意两个合法编码之间不同二进数位数的最小值;

        0011与0001 的码距为1,一位错误时无法识别; 

        0000、0011、0101、0110、1001、1010、1100、1111等编码码距为2。任何一位发生改变,如0000变成1000就从有效编码变成了无效编码,容易检测到这种错误。

        校验码中增加冗余项的目的就是为了增大码距

        码距与检错、纠错能力的关系

  •         码距≥e+1:可检测e个错误
  •         码距≥2t+1:可纠正t个错误
  •         码距≥e+t+1:可纠正t个错误,同时检测e个错误(e ≥ t)

        码距越大,抗干扰能力越强,纠错能力越强,数据冗余越大, 编码效率低,编码电路也相对复杂;

        奇偶校验

                奇偶校验的基本原理

                1. 增加冗余码(校验位)

                2. 有效信息(k位) 校验信息(r=1位) 

                3. 编码:根据有效信息计算校验信息位,使校验码(数据+ 1位校验信息)中1的个数满足奇/偶校验的要求: (连续异或,偶数个1时结果为0)

                0001 ➡ 00011 (偶校验) P = D_1\oplus D_2 \oplus D_3 \oplus D_4 (校验码偶数个1

                0001 ➡ 00010 (奇校验) P = \overline{D_1\oplus D_2 \oplus D_3 \oplus D_4}校验码奇数个1

                4. 检错:

                        偶校验检错码: G=C\oplus X_1 \oplus X_2 \oplus X_3... \oplus X_n,G=0表示数据正常,否则表示出错。

                        奇校验检错码: G=\overline{C\oplus X_1 \oplus X_2 \oplus X_3... \oplus X_n},G=0表示数据正常,否则表示出错。

奇校验电路

        特点 

  •         编码与检错简单
  •         编码效率高
  •         不能检测偶数位错误, 无错结论不可靠,是一种错误检测码
  •         不能定位错误,因此不具备纠错能力
  •         奇/偶校验码距为 2,如11000011 ➡ 01000010
  •         一般在同步传输方式中常采用奇校验,异步传输方式中常采用偶校验

        改进的奇/偶校验

  •         双向奇偶校验
  •         方块校验
  •         垂直水平校验

CRC校验

        CRC(Cyclic Redundancy Check)校验是一种在数据通信中常用的差错检测技术。它通过对数据进行多项式运算,生成一定长度的冗余校验码,将该校验码附加到原始数据中发送。接收方在收到数据后,进行相同的多项式运算,然后将计算出的校验码与接收到的校验码进行比较,从而检测数据是否在传输过程中发生了错误。

        收发双方约定的一个(r + 1)位二进制数,发送方利用G(X)对信息多项式做模2除运算,生成校验 码。接收方利用G(X)对收到的编码多项式做模2除运算检测差错及错误定位。

        G(x)应满足的条件:

  •         最高位和最低位必须为1;
  •         被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0; 
  •         不同位发生错误时,模2除运算后余数不同;
  •         对不为0余数继续进行模2除运算应使余数循环。 

CRC校验的主要特点包括:

  1. 多项式生成器: CRC校验使用一个预定义的生成多项式,通常用二进制表示。该多项式决定了CRC校验码的生成规则。

  2. 除法运算: 数据发送方和接收方都执行CRC多项式除法运算。发送方用生成多项式除以数据,并将余数(CRC校验码)附加到数据末尾。接收方执行相同的除法运算,如果余数为零,说明数据没有错误;否则,说明数据可能存在错误。

  3. 固定长度的校验码: CRC校验生成的校验码长度是固定的,通常在16位、32位等。这种特性有助于在接收端检测到传输过程中可能发生的错误。

  4. CRC不能纠正错误,但它可以有效地检测出大多数传输错误。

常见生成多项式G(x)

        模2运算规则        

        a) 加/减运算:异或运算,加不进位,减不借位

                        0±0=0,0±1=1,1±0=1,1±1=0

        b) 模2除法:按模2减,求部分余数,不借位。

        c)上商原则:

        ①部分余数首位为1时,商为1,减除数;

        ②部分余数首位为0时,商为0,减0;

        ③当部分余数的位数小于除数的位数时,该余数即为最后余数。

        编码步骤

        (1)根据待校验信息的长度k,按照 k+r ≤ 2r-1 确定校验位r的位数

                如对4位信息 1100 进行CRC编码,根据 4 + r \le 2^r - 1

                得 r_{min}=3

        (2)根据r 和生成多项式的选择原则,选择位数为 r +1 的生成多项式G(X)= 1011

        (3)进行下列变化:将待校验的二进制信息Q(X)逻辑左移 r 位,得到Q(X)’

                        有效信息(k位) 校验信息(r位)  ➡ 1100 000

        (4)对Q(X)’按模2运算法则除G(x),求CRC编码中的r位校验信息 

        (5)用得到的余数替换Q(X)’的最后r位即可得到对应的CRC编码:

1100 000➡1100 010

CRC的检错与纠错 

        接收方利用G(X)对收到的编码多项式做模2除运算,余数为0说明传输没有错误;余数不为0说明传输有错。

        例如(7,4)编码不同数位出错对应的余数:

G(x)=1011

        若余数不为0,一边对余数补0继续做模2除,同时让被检测的校验码循环左移,当余数为101时, 出错位也移到A1位置。通过异运算纠正后继续循环左移和执行余数模2除法,直到修改后的出 错位回原位。

海明校验

        海明检验基于海明码(Hamming Code),一种特殊的错误检测和纠正码,通过添加额外的校验位来实现。

        海明码中的每个数据块包含了原始数据位(数据)和额外的校验位(校验码)。这些校验位的位置由数据位的位置决定,以一种特定的规则进行排列。通过这种方式,当数据传输时,接收方可以使用这些校验位来检测并纠正传输过程中可能发生的错误。

海明检验的基本原理:

  1. 生成海明码: 在发送数据之前,计算数据的海明码。海明码中的每个校验位都是根据特定规则与数据位相关联的。

  2. 传输数据: 将原始数据和生成的海明码一起传输。

  3. 接收数据: 接收方收到数据后,使用相同的海明码规则计算接收到的数据的海明码。

  4. 校验: 接收方比较接收到的校验位与计算出的校验位。如果它们不匹配,则表示数据在传输过程中发生了错误。

        如果海明检验检测到错误,接收方可以尝试使用海明码中的校验位来确定错误的位置,并尝试纠正错误。这种方式可以有效地提高数据传输的可靠性,特别是在受到噪声干扰或传输信道不稳定的情况下。

        具体步骤

        增加冗余码(校验位)

  •         有效信息(k位) 校验信息(r位)
  •         设k+r位海明码从左到右依次为第1,2,3,…..., k+r位
  •         r位校验位记为P_i(i=1,2,…,r),分别位于k+r位海明编码的第2^{i-1}(i=1,2,…,r) 位上,其余位依次放置被校验的数据位;

(7,4)海明校验码中校验位和被校验信息位的排列如下:

海明码位号 Hj1234567891011
P和b的分布P1P2b1P3b2b3b4P4b5b6b7
  •         Hj位的数据被编号小于j的若干个海明位号之和等于j的校验位所校验 ,如 

                由此可采用偶校验计算出P1~P4 四个校验位的值 

                P_1 = b_1\oplus b_2\oplus b_4\oplus b_5\oplus b_7

                P_2 = b_1\oplus b_3\oplus b_4\oplus b_6\oplus b_7

                P_3 = b_2\oplus b_3\oplus b_4

                P_4 = b_5\oplus b_6\oplus b_7

  •         设置指错字G4G3G2G1

                G_4G_3G_2G_1为0则表明无错误,反之指出出错位的海明码位号。

                如G_4G_3G_2G_1 = 1 0 1 1, 表明H_{11}位出错! 当只有一位出错时,由于指错字G_4G_3G_2G_1能定位错误,故可利用指错字配合适当电路和异或门,修正出错位。 

 

 

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

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

相关文章

PHP开发日志 ━━ 深入理解三元操作与一般条件语句的不同

概况 三元运算符的功能与“if…else”流程语句一致。 在一般情况下,三元操作替换if条件语句可以精简代码,并且更为直观,但是在下面的情况中使用三元操作将会返回警告。 借图: 案例 比如原代码: class classA{publ…

DS:树及二叉树的相关概念

创作不易,兄弟们来波三连吧!! 一、树的概念及结构 1.1 树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c…

Java并发基础:ConcurrentLinkedDeque全面解析!

内容概要 ConcurrentLinkedDeque类提供了线程安全的双端队列操作,支持高效的并发访问,因此在多线程环境下,可以放心地在队列的两端添加或移除元素,而不用担心数据的一致性问题。同时,它的内部实现采用了无锁算法&…

概率论-随机变量

更多AI技术入门知识与工具使用请看下面链接: https://student-api.iyincaishijiao.com/t/iNSVmUE8/

二叉树-------前,中,后序遍历 + 前,中,后序查找+删除节点 (java详解)

目录 提要: 创建一个简单的二叉树: 二叉树的前中后序遍历: 二叉树的前序遍历: 二叉树的中序遍历: 二叉树的后续遍历: 小结: 二叉树的前中后续查找: 二叉树的前序查找&#…

MySQL表的增删查改(基础)

新增(Create) 1.全列插入 全列单行插入 insert into 表名 values(值,值……); 也可以全列且多行插入 insert into 表名 values (值,值……),(值,值……)……; 2.指定列插入 insert into 表…

【JAVA WEB】JavaScript--函数 作用域 对象

目录 函数 语法格式 示例 定义没有参数列表,也没有返回值的一个函数 定义一个有参数列表 ,有返回值的函数 关于参数个数 函数表达式 作用域 作用域链 对象 基本概念 创建对象 1.使用 字面量 创建对象 2.使用new Object()创建对象 3.使…

【教程】MySQL数据库学习笔记(二)——数据类型(持续更新)

写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【MySQL数据库学习】系列文章 第一章 《认识与环境搭建》 第二章 《数据类型》 文章目录 【MySQL数据库学习】系列文章一、整…

Ps:创建联系表

Ps菜单:文件/自动/联系表 II Automate/Contact sheet II Photoshop 的“联系表 II” Contact Sheet II命令为快速生成图像集合的预览和打印目录提供了一种高效的方法。 此命令可以通过自动化过程读取指定的图像文件,然后根据用户定义的参数(如…

初识webpack(二)解析resolve、插件plugins、dev-server

目录 (一)webpack的解析(resolve) 1.resovle.alias 2.resolve.extensions 3.resolve.mainFiles (二) plugin插件 1.CleanWebpackPlugin 2.HtmlWebpackPlugin 3.DefinePlugin (三)webpack-dev-server 1.开启本地服务器 2.HMR模块热替换 3.devServer的更多配置项 (…

很在意别人的看法,怎么办?

如果把我们每天的幸福和烦恼列出来,你也许会发现一件有趣的事情: 带给我们幸福感的,往往是别人的感谢、鼓励和肯定。它们会带给你许多动力,让你一整天都充满激情。 反过来,带给我们烦恼的,大多数来源于什么…

vscode运行Live Server报错:Windows找不到文件Microsoft Edge

问题场景: 在写好的html文件空白处右键单击Open with Live Server后弹出下面提示框报错Windows找不到文件Microsoft Edge有的电脑报错是Windows找不到文件chrome 问题解决方案: 应该是由于你电脑上的默认浏览器Chrome的安装路径变了,更新C…

【Linux】进程信号概念 | 核心转储 | 信号的产生

文章目录 一、信号入门1.1 生活中的信号1.2 进程角度的信号1.3 信号的概念1.4 信号的三种常见处理方式 二、信号的产生2.1 通过终端按键产生信号问题1:OS怎么知道键盘输入了ControlC ?问题2:按CtrlC终止进程和按Ctrl\终止进程,有什…

mysql表设计

表设计流程: (1)分库:根据模块分 (2)分表:根据流程分表 (3)冗余字段和视图设计 21个表设计准则 (1)命名规范 account_no,account_number 表名用t…

【闲谈】开源软件的崛起与影响

随着信息技术的快速发展,开源软件已经成为软件开发的趋势,并产生了深远的影响。开源软件的低成本、可协作性和透明度等特点,使得越来越多的企业和个人选择使用开源软件,促进了软件行业的繁荣。然而,在使用开源软件的过…

软考 系统分析师系列知识点之信息系统战略规划方法(10)

接前一篇文章:软考 系统分析师系列知识点之信息系统战略规划方法(9) 所属章节: 第7章. 企业信息化战略与实施 第4节. 信息系统战略规划方法 7.4.6 战略栅格法 战略栅格(Strategic Grid,SG)法是…

基于CU,PO,RD,IPO矩阵图分析数据资产-自创

术语 数据资产:数据资产是具有价值的数据资源。没有价值的数据资源,通过采集,整理,汇总等加工后,也可以成为具有直接或间接价值的数据资产。传统企业逐渐数字化转型,尤其是互联网企业,都十分重视…

C#中implicit和explicit

理解: 使用等号代替构造函数调用的效果以类似重载操作符的形式定义用于类型转换的函数前者类型转换时候直接写等号赋值语法,后者要额外加目标类型的强制转换stirng str -> object o -> int a 可以 int a (int)(str as object)转换通过编译,但没有转换逻辑所以运行会报错…

《区块链公链数据分析简易速速上手小册》第3章:区块链数据结构(2024 最新版)

文章目录 3.1 区块和交易的结构3.1.1 基础知识3.1.2 重点案例:构建简单的区块链3.1.3 拓展案例 1:验证交易签名生成密钥对签名交易验证签名完整的交易签名与验证演示 3.1.4 拓展案例 2:监听和解析区块链事件代币合约示例(Solidity…

Android adb使用超级大全

Android adb使用超级大全 ADB,即Android Debug Bridge,是一款强大的工具,对于Android开发/测试人员来说是不可或缺的,同时也是Android设备玩家的好玩具。本文将详细介绍ADB的使用方法。 ADB的基本用法如下: 命令语法…