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

news2024/11/26 23:16:05

目录

1、机器数及特点

1.1 机器内的数据表示

1.1.1.原码

1.1.2. 反码

1.1.3. 补码

1.2 常见机器数的特点

2、定点数与浮点数据表示

2.1 定点数据表示

2.2 浮点数据表示

2.3 补充:小数的二进制表示

3、数据校验的基本原理

3.1 必要性:

3.2 基本原理

3.2.1 码距:

3.2.2 码距与检错或纠错能力的关系

3.2.3 选择码距要考虑的因素

4、奇偶校验

4.1 基本原理

4.2 特点

4.3 改进的奇/偶校验

5、CRC校验及实现

5.1 基本原理

5.2 模2运算规则

5.3 CRC的编码方法

5.4 CRC的检错与纠错

6、海明校验及实现

6.1 基本原理

6.2 举例


1、机器数及特点

目的:组织数据,方便计算机硬件直接使用

因素:

  • 支持的数据类型;
  • 能表示的数据范围;
  • 能表示的数据精度;
  • 存储和处理的代价;
  • 是否有利于软件的移植等……

1.1 机器内的数据表示

真值: 符号用“ + ”、“ - ”表示的数据表示方法。

机器数: 符号数值化的数据表示方法,用0、 1表示符号。

三种常见的机器数: 设定点数的形式为X0,X1 X2 X3... Xn

1.1.1.原码

原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如:如果是8位二进制:

[+1]原= 0000 0001

[-1]原= 1000 0001

第一位是符号位,因为第一位是符号位,所以8位二进制数的取值范围就是:(即第一位不表示值,只表示正负。)

[1111 1111 , 0111 1111]

[-127 , 127]

原码是人脑最容易理解和计算的表示方式。

1.1.2. 反码

反码的表示方法是:

正数的反码是其本身;

负数的反码是在其原码的基础上,符号位不变,其余各个位取反。

[+1] = [0000 0001]原= [0000 0001]反

[-1] = [1000 0001]原= [1111 1110]反

可见如果一个反码表示的是负数,人脑无法直观的看出来它的数值。通常要将其转换成原码再计算。

1.1.3. 补码

补码的表示方法是:

正数的补码就是其本身;

负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(也即在反码的基础上+1)

[+1] = [0000 0001]原= [0000 0001]反= [0000 0001]补

[-1] = [1000 0001]原= [1111 1110]反= [1111 1111]补

对于负数,补码表示方式也是人脑无法直观看出其数值的。通常也需要转换成原码再计算其数值。

1.2 常见机器数的特点

原码:

  • 表示简单:[X]原 = 2^n - X
  • 运算复杂 运算位不参加运算,要设置加法、减法
  • 0的表示不唯一

反码:

  • 表示相对原码复杂 [X]反 = 2^(n+1) + X - 1
  • 运算相对简单:符号位参加运算,只需设置加法器,但符号位的进位为需要加到最低位
  • 0 的表示不唯一

补码:

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

移码:

  • 移码表示浮点数的阶码, IEEE754中阶码用移码表示。
  • 设定点整数X的移码形式为XoX1Xx2X...Xn则移码的定义是:

[X]移 = 2"+ X -2^n<X≤2"(X为真值, n为X的整数位位数)

具体实现:不管正负数,只要将其补码的符号位取反即可

2、定点数与浮点数据表示

2.1 定点数据表示

  • . 可表示定点小数和整数
  • .表现形式:

  • 定点小数表示数的范围(补码为例): -1<= x <= 1-2^(-n)
  • 定点整数表示数的范围(补码为例):-2^n <= x <= 2^n - 1
  • 定点数据表示数的不足:数据表示范围受限

2.2 浮点数据表示

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

浮点数的使用场合

当数的表示范围超出了定点数能表示的范围时。

(1)格式(一般格式)

  • E:阶码位数决定数据的范围
  • M:尾数位数,决定数的精度

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

(2)IEEE 754格式

  • 指数采用偏移值,其中单精度偏移值为127 ,双精度为1023,将浮点数的阶码值变成非负整数,便于浮点数的比较和排序。
  • IEEE754尾数形式为1.XXXXX,其中M部分保存的是XXXXXX(1被隐藏) ,从而可保留更多的有效位,提高数据表示的精确度。

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

N = (-1)^5 x 2(E - 127) x 1.M

随E和M的取值不同,IEEE754浮点数据表示具有不同的意义

例:将十进制数 -12.75转换成32位IEEE754格式浮点数的二进制格式。

求解思路:

  • 步骤1: 确定符号位 、
    • 由于数值为负数,符号位为1。
  • 步骤2: 将数值部分转换为二进制
    • 将绝对值 12.75 转换为二进制:1100.11
  • 步骤3: 规格化
    • 移动小数点使得只剩一个非零位,得到规格化的尾数部分为 1.10011。
  • 步骤4: 计算指数
    • 计算指数值,偏移量为 127。移动小数点的次数为 3,所以指数值为 3 + 127 = 130。将130转换为二进制为 10000010。
  • 步骤5: 组合符号位、
    • 指数部分和尾数部分 符号位:1 (1位)
    • 指数部分:10000010(偏移量为127) (8位)
    • 尾数部分:10011 (23位,不够补0)

将它们组合起来,得到IEEE 754表示的单精度浮点数为:11000001010011000000000000000000

2.3 补充:小数的二进制表示

0.75为例:

0.75 x 2 = 1.5 …… 1

0.5 x 2 = 1.0 …… 1

直到小数部分为0.

所以(0.75)10 = (0.11)2

同理,计算二进制数 0.11 的进制数:

1 * 2^(-1) + 1 * 2(-2) = 0.75

小数第一位从2^(-1)次方开始,依次类推。

3、数据校验的基本原理

3.1 必要性:

  • 受元器件的质量、电路故障或噪音干扰等因素的影响,数据在被处理、传输、 存储的过程中可能出现错误;
  • 若能设计硬件层面的错误检测机制,可以减少基于软件检错的代价(系统观)。

3.2 基本原理

3.2.1 码距:

  • 同一编码中,任意两个合法编码之间不同二进数位数的最小值;
  • 0011与0001的码距为1,一位错误时无法识别;
  • 0000、0011、 0101、 0110、 1001、1010、 1100、 1111等编码码距为2。任何一位发生改变,如0000变成1000就从有效编码变成了无效编码,容易检测到这种错误。
  • 校验码中增加冗余码的目的就是为了增大码距

3.2.2 码距与检错或纠错能力的关系

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

3.2.3 选择码距要考虑的因素

  • 增加冗余码(校验位)

  • 码距越大,抗干扰能力越强,纠错能力越强,数据冗余越大编码效率低,编码电路也相对复杂;
  • 选择码距必须考虑信息发生差错的概率和系统能容许的最小差错率。

4、奇偶校验

4.1 基本原理

  • 增加冗余码(校验位)

  • 编码: 根据有效信息计算校验信息位,使校验码(数据 + 1位校验信息)中1的个数满足奇/偶校验的要求
    • 0001 -> 00011 (偶校验)

    • 0001 -> 00010 (奇校验)

  • 检错方法与电路

奇校验检错码:(1的个数为奇数个)

    • G = 0表示数据正常,否则表示出错

偶校验检错码:(1的个数为偶数个)

    • G = 0 表示数据正常,否则表示出错

4.2 特点

  • 编码与检错简单
  • 编码效率高
  • 不能检错偶数位错误,无措结论不可靠,是一种错误检测码
  • 不能定位错误,因此不具备纠错能力

4.3 改进的奇/偶校验

双向奇偶校验

方块校验

垂直水平校验

  • 可纠正1位错误
  • 可检测出某行(列)上的奇数位
  • 可检测出一部分偶数位错误
  • 不能检测出错码分布在矩形4个顶点上的错误

5、CRC校验及实现

5.1 基本原理

  • 增加冗余位

  • 生成多项式G(X)
    • 收发双方约定的一个(r+ 1)位二进制数,发送方利用G(X)对信息多项式做模2除运算,生成校验码。接收方利用G(X)对收到的编码多项式做模2除运算检测差错及错误定位。
  • G(x)应满足的条件
    • A、最高位和最低位必须为1 ;
    • B、当被传送信息( CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0 ;
    • C、不同位发生错误时,模2除运算后余数不同;
    • D、对不为0余数继续进行模2除运算应使余数循环。、
  • 常见生成多项式

5.2 模2运算规则

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

0+0=0,0+1=1, 1+0=1,1+1 =0

b) 模2除法

按模2减,求部分余数,不借位。

c) 上商原则

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

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

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

5.3 CRC的编码方法

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

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

得 rmin= 3

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

(3) 进行下列变化

即: 将待校验的二进制信息Q(X)逻辑左移r位得到Q(X)'

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

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

接收方利用G(X)对收到的编码多项式做模2除运算

余数为0,表示没出错

余数不为0,说明出错

5.4 CRC的检错与纠错

编码不同数位出错对应的余数

  • 利用出错情况下余数的循环特性进行纠错
    • 若余数不为0 ,一边对余数补0继续做模2除,同时让被检测的校验码循环左移,当余数为101时出错位也移到A1位置。通过异运算纠正后继续循环左移和执行余数模2除法,直到修改后的出错位回原位。不需对每一位提供纠正电路。
    • 当位数增多时,循环码校验能有效地降低硬件代价,这是它得以广泛应用的主要原因

例题

1 假定要传输的数据长度为10位,对每个数据块进行CRC校验,根据CRC校验规则,要能检测并纠正一位错误,对应的CRC码的总位数为( D )(单选)

  • A.4
  • B.10
  • C.13
  • D.14

2 假定要传输的数据长度为10位,对每个数据块进行CRC校验,根据CRC校验规则,要能检测并纠正一位错误,对应的CRC码的总位数为( C )(单选)

  • A.4
  • B.10
  • C.13
  • D.14

3 设计待校验的信息为8位,假定传输中最多只发生一位错误,采用CRC校验时,生成多项式的二进制位数至少需要 (C) (单选)

  • A.4
  • B.10
  • C.13
  • D.14

4 设待校验的信息长度为 K 位, 生成多项式为G(X),下列关于CRC校验的描述中正确的是( BD ) (多选)

  • A.只有一位出错时,接收端进行校验得到的余数只与出错位的位置有关,与K位信息的取值和G(X)的取值无关
  • B.只有一位出错时,接收端进行校验得到的余数与出错位位置和G(X)的取值有关,与K位信息的取值无关
  • C.只有一位出错时,接收端进行校验得到的余数与出错位位置、G(X)及K位信息的取值都有关
  • D.CRC校验得到的无错结论不一定是正确的

6、海明校验及实现

6.1 基本原理

  • 增加冗余位(校验位)

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

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

3)Hj位的数据被编号小于j的若干个海明位号之和等于j的校验位所校验,如:

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

4)设置指错字G4G3G2G1

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

6.2 举例

设被传送的信息b1b2b3b4b5b6b7 = 101 1000,采用偶校验;

则:

P1=b1⊕b2⊕b4⊕b5⊕b7=1⊕0⊕1⊕0⊕0=0

P2=b1⊕b3⊕b4⊕b6⊕b7=1⊕1⊕1⊕0⊕0=1

P3=b2⊕b3⊕b4=0⊕1⊕1=0

P4=b5⊕b6⊕b7=0⊕0⊕0=0

得到的海明编码为H = 01 1001 1 000 0

  • 当传输无措时,即 H = 01 1001 1 000 0
  • 则:
    • G4=P4 ⊕ b5 ⊕ b6 ⊕ b7=0 ⊕ 0 ⊕ 0 ⊕ 0= 0
    • G3=P3 ⊕ b2 ⊕ b3 ⊕ b4=0 ⊕ 0 ⊕ 1 ⊕ 1=0
    • G2=P2 ⊕ b1 ⊕ b3 ⊕ b4 ⊕ b6 ⊕ b7= 1 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 0=0
    • G1=P1 ⊕ b1 ⊕ b2 ⊕ b4 ⊕ b5 ⊕ b7= 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 =0

    • G4G3G2G1=0000,表明无错 !

  • 当传输出措时,即 H = 01 1001 1 000 1
  • 则:
    • G4=P4 ⊕ b5 ⊕ b6 ⊕ b7=0 ⊕ 0 ⊕ 0 ⊕ 1= 1
    • G3=P3 ⊕ b2 ⊕ b3 ⊕ b4=0 ⊕ 0 ⊕ 0 ⊕ 1= 0
    • G2=P2 ⊕ b1 ⊕ b3 ⊕ b4 ⊕ b6 ⊕ b7= 1 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 1= 1
    • G1=P1 ⊕ b1 ⊕ b2 ⊕ b4 ⊕ b5 ⊕ b7= 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1= 1
    • G4G3G2G1= 1011 表明H11位出错!
  • 当只有一-位出错时,由于指错字G,G3G2G1能定位错误,故可利用指错字配合适当电路和异或门,修正出错位!

特点:

  • 1)G4G3G2G1 = 0000,不一定无措!
    • 如P1、b1、P2三位同时出错,则G2和G1依然为0
  • 2)一位错和两位错不能由指错字区别
    • 如b1、b2同时出错,与仅b3出错时的指错字均为G,G3G,G =0110。

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

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

相关文章

编程小白的自学笔记十四(python办公自动化创建、复制、移动文件和文件夹)

系列文章目录 编程小白的自学笔记十三&#xff08;python办公自动化读写文件&#xff09; 编程小白的自学笔记十二&#xff08;python爬虫入门四Selenium的使用实例二&#xff09; 编程小白的自学笔记十一&#xff08;python爬虫入门三Selenium的使用实例详解&#xff09; …

X86_64函数调用汇编程序分(2)

X86_64函数调用汇编程序分&#xff08;2&#xff09; 1 X86_64寄存器使用标准2 leaveq和retq指令2.1 leaveq2.2 retq 3 执行leaveq和retq之后栈的结构3.1 执行leaveq之后栈的结构3.1.1 test_fun_b函数执行leaveq之前的栈结构示意图3.1.2 test_fun_b函数执行leaveq之后的栈结构示…

MySQL使用Xtrabackup备份到AWS存储桶

1.安装Xtrabackup cd /tmp wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.33-28/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm yum -y localinstall percona-xtrabackup-80-8.0.33-28.1.el7.x86…

Markdown 字体变红色,2种办法

老读者都知道王哥是 10 年 markdown 专家&#xff0c;今天教大家如何搞定字体颜色通用技巧 文章目录 方案一效果 方案二效果 颜色参考表 方案一 HEML 代码&#xff1a; <font colorred> 学技术&#xff0c;到 JavaPub </font>或者 <font colorFF0000> 学技术…

OpenCV之图片修复(inpaint)

图片修复基本原理&#xff1a; 我们自己标定噪声的特征&#xff0c;然后根据噪声周围区域的颜色特征修复噪声所在的区域。通俗一点就是用邻近的像素替换那些坏标记&#xff0c;使其看起来像是邻居。 如下图&#xff0c;需要将白色框框去掉&#xff1a; 标定噪声特征 先分析白…

记一次在amd架构打包arm64架构的镜像的试错经历

前提 在amd架构打包了一个镜像&#xff0c;放在arm64架构服务器上可以load ,但是run的时候报平台不兼容的问题。 运行如下命令查看发现 架构属于 amd64 如下&#xff1a; docker inspect 镜像ID需要生成一个arm的镜像才能运行。 尝试 首先Dockerfile 的FROM 基础镜像就的是…

uniapp 接入微信小程序隐私政策兼容

自2023年9月15日起&#xff0c;对于涉及处理用户个人信息的小程序开发者&#xff0c;微信要求&#xff0c;仅当开发者主动向平台同步用户已阅读并同意了小程序的隐私保护指引等信息处理规则后&#xff0c;方可调用微信提供的隐私接口。 相关公告见&#xff1a;关于小程序隐私保…

Sharding-JDBC分库分表-分布式事务-5

分布式事务 Sharding JDBC事务介绍 分库分表必然会涉及到分布式事务的问题&#xff0c;关于这方面&#xff0c;sharding JDBC为用户提供了两种分布式事务解决方案&#xff1a;XA事务和BASE事务&#xff0c;这两个的区别是&#xff1a;XA事务&#xff0c;追求强一致性&#xf…

udev自动创建设备节点的机制

流程框图如下 自动创建 1 内核检测到设备插入后&#xff0c;会发送一个uevent事件到内核中&#xff0c;并提供有关硬件设备的信息。 2 udevd守护程序收到uevent事件后&#xff0c;创建一个设备类&#xff0c;&#xff08;向上提交目录信息&#xff09;&#xff0c;会在内核中…

道路交通资产管理体系实施指南

声明 本文是学习GB-T 42932-2023 道路交通资产管理体系实施指南. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 7 支持 7.1 资源 组织宜确定并提供建立、实施、保持和持续改进资产管理体系所需的资源&#xff0c;包括人力、财力、物质、技 术、知…

Java8实战-总结26

Java8实战-总结26 用流收集数据分组多级分组按子组收集数据 用流收集数据 分组 一个常见的数据库操作是根据一个或多个属性对集合中的项目进行分组。就像前面讲到按货币对交易进行分组的例子一样&#xff0c;如果用指令式风格来实现的话&#xff0c;这个操作可能会很麻烦、啰…

ABB PP846 3BSE042238R1触摸屏模块

ABB PP846 3BSE042238R1是一款触摸屏模块&#xff0c;通常用于工业自动化和控制系统中&#xff0c;以提供人机界面&#xff08;HMI&#xff09;功能&#xff0c;允许操作员与控制系统进行交互和监控。以下是一些可能的产品功能和功能&#xff0c;但请注意&#xff0c;具体的功能…

win10一进桌面就全部黑屏了 win10开机黑屏怎么办

在使用Windows 10的过程中&#xff0c;我们会遇到许多问题&#xff0c;但它们都不会像黑屏那样烦人&#xff0c;因为黑屏时不会收到任何错误代码或消息&#xff0c;提示我们从何处开始进行故障排除。 在Windows 10操作系统中&#xff0c;出现黑屏可能有多种原因&#xff0c;它…

性能测试度量指标

1-响应时间 响应时间指从用户或事务在客户端发起一个请求开始&#xff0c;到客户端接收到从服务器端返回的响应结束&#xff0c;这整个过程所消耗的时间 在性能测试实践中&#xff0c;为了使响应时间更具代表性&#xff0c;响应时间通常是指事务的平均响应时间ART 在实践中要…

力扣刷题-移除指定值的链表元素

力扣203移除元素 题目来源&#xff1a; 力扣203 题目描述&#xff1a; 非常简单的一道题&#xff0c;主要强调两点 链表删除要记录删除位置的前驱节点 头节点没有前驱 因此直接headhead.next为了保持与后两种一致&#xff0c;加上虚拟节点&#xff0c;下一节点指向头节点 /***…

Java 复习笔记 -学生管理系统进阶篇

文章目录 学生管理系统进阶版一&#xff0c;需求部分&#xff08;一&#xff09;需求&#xff08;二&#xff09;分析1&#xff0c;登录界面2&#xff0c;用户类3&#xff0c;注册功能4&#xff0c;登录功能5&#xff0c;忘记密码6&#xff0c;验证码规则 二&#xff0c;实现部…

【具身智能】RT-2:视觉-语言-动作模型(VLA)

文章目录 前言一、视觉-语言-动作(VLA)模型二、利用 VLM 控制机器人三、实验四、 Demo五、总结前言 Robotic Transformer 2(RT-2)是由谷歌 DeepMind 新推出的大语言模型,它为人类提供了通过纯语言命令来优化机器人控制的能力。与此前的大模型不同,RT-2是一种新型的视觉-…

使用C语言EasyX 创建动态爱心背景

简介 在计算机图形学的世界中&#xff0c;有很多方法可以使程序的界面更加吸引人。在本篇博客中&#xff0c;我将向大家介绍如何使用 EasyX 图形库在 C 中创建一个动态的爱心背景。这不仅是一个简单的动画效果&#xff0c;它还包括背景的星星、旋转的心形以及一个美观的背景渐…

Scrapy爬虫框架实战

Python实现爬虫是很容易的&#xff0c;一般来说就是获取目标网站的页面&#xff0c;对目标页面的分析、解析、识别&#xff0c;提取有用的信息&#xff0c;然后该入库的入库&#xff0c;该下载的下载。以前写过一篇文章《Python爬虫获取电子书资源实战》&#xff0c;以一个电子…

Vite+React+Electron开发入门,10分钟搭建本地环境并打包

前言 想使用vite和react开发跨平台桌面的软件方案有electron和tauri两种&#xff0c;但是我个人更喜欢tauri&#xff0c;无奈electron名声大燥&#xff0c;面试要求里很多都写着&#xff1a;electron...可见这类公司多么落后。但是呢&#xff0c;又秉持着存在即合理的理念&…