数据的机器层级表示

计算机组成原理 | 2021-10-02 14:45:47 | 阅读 122 次 | 评论(0)






     

     

    总结

    数值数据

    无符号数

    带符号数

    原码

    反码

    补码

    定点表示与浮点表示法

    定点表示范围

    浮点表示范围

    非数值数据表示方法

    ASCII-7

    十进制和数串的表示

    BCD

    8421

    2121

    3

    数据校验码

    奇偶校验码

    海明码

    CNC



    无符号数和带符号数的表示方法

    数的定点与浮点表示方法

    字符和汉字编码方法

    数据校验码

     

    数值数据表示

    数据:带符号数 无符号数

    带符号数:原码 补码 反码

     

    • 计算机中的数值数据

    二进制数(B

    八进制数(Q

    十进制数(D

    十六进制数(H)

     

    数制表示及转换

     

    • 无符号数与带符号数

    无符号数:整个机器字长全部二进制位均表示数值位,相当于数的绝对值

       机器字长为n+1位的无符号数的表示范围0~2n+1-1

    带符号数:正、负数

       机器字长为n+1位的带符号数表示范围-2n+1~2n+1-1 8位(-128-127

    整数: 符号位 数值位.

    小数: 符号位.数值位

    • 原码表示法

    正数

    0|X|

     

    负数

    1|X|

     

    特殊

     

    0.0110

    0.0110

     

    -0.0110

    1.0110

     

    +0

    00000

    0110

    0110

     

    -0110

    10110

     

    -0

    10000

     

     

     

     

     

     

    +0

    0.0000

     

     

     

     

     

     

    -0

    1.0000

    • 反码表示法

    正数

    =原码

     

    负数

    1 |X|取反

     

    特殊

     

    0.0110

    0.0110

     

    -0.0110

    1.1001

     

    +0

    00000

    0110

    00110

     

    -0110

    11001

     

    -0

    11111

     

     

     

     

     

     

    +0

    0.0000

     

     

     

     

     

     

    -0

    1.1111

    • 补码表示法

    正数

    =原码

     

    负数

    1 |X|取反+1

     

    特殊

     

    0.0110

    0.0110

     

    -0.0110

    1.1010

     

    +0

    00000

    0110

    00110

     

    -0110

    11010

     

    -0

    00000

     

     

     

     

     

     

    +0

    0.0000

     

     

     

     

     

     

    -0

    0.0000

    原码和补码互换

    X为负数的另一种方法:尾数第一个1及其右部的0保持不变,左部各位取反,符号位

    保持不变。

    [X]=10111001100

    [X]=11000110100

    • 三种码制比较

    补码和反码符号位可作为数值位的一部分看待,和数值位一起运算;但原码的符号位不允许和数值位一起运算,必须分开处理

     

    机器数的定点表示与浮点表示--根据小数点的位置是否固定

    定点表示法:所有小数点的位置固定不变

    • 定点小数:Xs.X1X2……Xn

    表示范围X最大正数=1-2-n   X最小正数=2-n

    原码:-1-2-n~1-2-n

    补码:-1~1-2-n

    • 定点整数:XsX1X2……Xn (机器字长有n+1位)

    原码表示范围:-2n-1~2n-1

    补码表示范围:-2n~2n-1

    浮点表示法

    浮点数:小数点的位置根据需要而浮动

    N=M×rE

    1. r为基数,通常r=2
    2. E为阶码,带符号整数,常用移码或补码表示
    3. M为尾数,带符号数小数,常用原码或补码表示
    1 位 
k イ 立 
畍 碼 部 分 E 
1 位 
尾 数 部 う
    • 浮点数的底是隐含的,在整个机器数中不出现
    • 阶码的符号位为es,阶码e的大小反映的在数N中小数点的实际位置
    • 尾数的符号位为ms,它是整个浮点数的符号位,尾数m表示了该浮点数的精度

    浮点数的表示范围

    上 溢 
负 数 区 
最 小 负 数 
上 溢 阶 码 > 最 大 阶 玛 
下 溢 阶 码 < 最 小 阶 码 
“ = 10 
下 溢 
0 
机 器 零 处 理 
上 溢 
正 数 区 
最 大 正 数 
N=MXrE 
尾 数 n 位 
阶 码 m 位 
最 小 正 数 
最 大 负 数 
一 2 巧 × 2 
2 “ × ( 1 一 2 . 蜘 ) 
讠 殳 m = 4
    • 规格化浮点数:为了提高运算精度,需要充分利用尾数有效位。即规定尾数的最高数位必须是一个有效值。

    1/2<=|M|<1

    • 在尾数用补码表示时,规格化浮点数应满足尾数最高数位与符号位不同

     

    真值

    阶码(E)

    尾数(M

    绝对值最大负数

    01111

    1.0000

    绝对值最小负数

    10000

    1.1111

    规格化绝对值最小负数

    1000

    1.0111

    最大正数

    01111

    0.1111

    最小正数

    10000

    0.0001

    规格化最小正数

    10000

    0.1000

    移码表示法

    在真值X上加一个偏置值(常数),相当于X在数轴上向正方向平移了一段距离。

    • [X]移=偏置值+X
    • 偏置值=2n-1

    特点:

    • 最高位“0”表示负数,最高位“1”表示正数
    • 移码为全0时,他所对应分真值最小,移码为全1时,对应真值最大
    • 真值零在移码中表示形式唯一,1000 0000
    • 移码把真值映射到一个正数域,所以可将移码视为无符号数,直接按无符号数规则比较大小
    • 同一数值移码和补码除最高位相反外,其他各位相同
    偏 置 值 为 21 的 移 码 、 补 码 和 真 值 之 间 的 关 系 
真 值 X ( 十 进 制 ) 真 值 X ( 二 进 制 ) 
00000 到 过 0 
. 128 
. 1 佣 0m00 
1 00m00 
00m 佣 
· 127 
· 1111111 
1 00m01 
00m01 
. 0000m 1 
1 111111 
111111 
0000m0 
00m00 
1 00m 佣 
000 1 
1 00m01 
00m0 
127 
1111111 
111111 
1 111111

    阶码采用移码的原因

    • 浮点数的阶码采用移码的原因,阶码大的其对应的真值就大,阶码小的其对应真值就小
    • 简化机器中的判零电路。当阶码全为零(移码的各位均为 0 时,对应的阶码值最小),尾数也全为零,表示机器零

    定点、浮点表示法和定点、浮点计算机

    定点、浮点表示法的区别

    1. 若字长相同,浮点数表示的范围远远大于定点数
    2. 浮点数精度降低,数轴上各点排列更稀疏
    3. 浮点运算比定点运算复杂
    4. 溢出处理:定点运算时,运算结果超出数的表示范围,发生溢出,但在浮点运算时,运算结果超出尾数的表示范围不一定溢出,阶码超出所能表示的范围时才产生溢出。

    定点机与浮点机

    • 定点机:以定点运算为主,浮点运算通过软件来实现
    • 定点机+浮点软件:浮点运算部件是专门用于对浮点数进行运算的部件
    • 浮点机:具有浮点运算指令和基本的浮点运算器

    非数值数据的表示

    非数值数据即字符数据,即字符、字符串、图像符号和汉字等各种数据,不用来表示数值的大小

    字符和字符串的表示

    1. ASCII字符编码

    用七位二进制表示一个字符,包括十个二进制数字(0~9)、52个英文大写字母(A-Z,a-z)、34个专用符号,3个控制符号,共128个字符

    计算机中通常一个字节存放一个字符

    1. 字符串的存放

    向量存放法:在存储器中占用一片连续的空间,每个字节存放一个字符代码,字符串的所有元素在物理上邻接。在每个字节中实际存放的是相应字符的ASCII码。

    统一代码

    Unicode:统一代码,可以容纳世界上所有文字和符号的字符编码方案。

    Unicode基本方法:用一个16位的数来表示每个符号,可以表示65536个不同的字符或符号。被称为基本多语言平面(BMP),即UCS-2编码。

    USC-4,可以表示100多万个自定义字符

    十进制和数串的表示

    十进制数的编码

    用四位二进制数表示一位十进制数,称为二进制编码的十进制数,简称BCD码。

    BCD码具有二进制的形式,保留了十进制数的特点

    十进制

    8421

    2421

    3

    0

    0000

    0000

    0011

    1

    0001

    0001

    0100

    2

    0010

    0010

    0101

    3

    0011

    0011

    0110

    4

    0100

    0100

    0111

    5

    0101

    1011

    1000

    6

    0110

    1100

    1001

    7

    0111

    1101

    1010

    8

    1000

    1110

    1011

    9

    1001

    1111

    1100

    十进制数串

    1. 非压缩的十进制数串:一个字节存放一个十进制数或符号的ASCII-7码(一个字节=8位二进制数 1Byte=8bit)
    2. 压缩的十进制数串:一个字节可存放两位BCD码表示的十进制数,节省存储空间,便于直接进行十进制算术运算

    现代微机系统中数据表示举例

    现代微机系统大多采用Intel系列微处理器,结构:IA-32结构

    IA-32结构基本数据类型:字节(8位)、字(16位)、双字(32位)、四字(64位)、双四字(128位)

    高 字 
高 字 节 亻 
低 字 
高 四 字 
高 双 字 
N+4 
低 四 字 
N* 8 一 
低 双 字 
字 节 
双 字 
四 字 
双 四 字
    1. 无符号整数:
      1. 字节:0~255
      2. 字:0~65535
      3. 双字:0~2^32-1
      4. 四字:0~2^64-1
    2. 带符号整数
      1. 字节:-128~127
      2. 字:-32768~32767
      3. 双字:-2^31~2^31-1
      4. 四字:-2^63~2^63-1
    3. 浮点数

    与IEEE 754标准所规定的格式直接对应

    1. 指针是主存单元的地址,IA-32结构定义了两种类型的指针:近指针(32位)和远指针(64位)
    2. 串数据:包括位串、字节串、字串和双字串。一个串可以包含从一个字节到4GB的内容。
    3. BCD数:IA-32结构中BCD码实际上是指8421码

     

    数据校验码:发现错误或自动改正错误的数据编码方式

    首先通过函数f对数据进行计算产生一种代码(校验码),将原来数据(长k位)与校验码(长R位)一起存储

    接着将数据(k位)读出,在这个k位中产生一组新的R位代码,与计算产生的代码比较:

    • 结果一致,无差错,取出的数据位传送出去
    • 检测到差错,可以纠正,数据位和纠错位一起送入纠正器,产生一组正确的k位数据位
    • 检测到差错,无法纠正,报告出错

    奇偶校验码

    可以检测出一位错误(或奇数位错误),但不能确定错误的位置,也不能检测出偶数位错误

     

    规律:

    校验位的取值(01)将使整个校验码中“1”的个数为奇数或偶数

    • 奇校验:整个校验码中“1”的个数为奇数
    • 偶校验:整个校验码中“1”的个数为偶数

    简单奇偶校验

    有效信息

    奇校验码

    偶校验码

    0000 0000

    10000 0000

    00000 0000

    0101 0100

    00101 0100

    10101 0100

    偶校验:P=D7D6..D1

    奇校验:P=𝐷7⊕𝐷6⊕..⊕𝐷1

    1. 校验位形成

    将一个字节的代码D7~D0写入主存时,同时将他们送入奇偶校验逻辑电路,该电路产生的“奇数、形成”信号就是校验位。与8位代码一起写入主存

    1. 校验检测

    将校验位与“奇形成”送入奇偶校验电路检测(异或),如果“奇校验出错”=0,则代码无错;若“奇校验出错”=1,则代码有错。出错位置不能确定(8位信息位与一位校验位)。

    交叉奇偶校验

    计算机在进行大量字节传送时,不仅每一个字节有一个奇偶校验位做横向校验,而且全部字节同一位也设置一个奇偶校验位做纵向校验,横向、纵向同时校验的方法称为交叉校验。可以发现两位同时出错。

    海明校验码

    原理:

    1. 在有效信息位中加入几个校验位形成海明码,使码距均匀拉大
    2. 将海明码每一个二进制位分配到几个奇偶校验组
    3. 当一位出错,会引起相关几个校验位的值发生变化,可以发现错误并指出错误位置

     

    1.  编码

    校验位的位数K与信息位的位数N应满足:2k-1≥N+K−1

    信息位一个字节为8位,因此K=5

    故海明码位数:13 H13H12..H1

    校验位:P5P4..P

    校验位下标与海明码位号关系 Pi Hk   k=2i-1  即P4=H8

    P5已经是最高位了,只能在H13

    P5   D8  D7  D6  D5 P4 D4D3 D2 P3 D1P2  P1

    H13H12H11H10H9H8H7 H6H5 H4H3H2 H1

    如何计算结果:

    D8=H12

    12=4+8

    D7=H11

    11=1+2+8

    D6=H10

    10=2+8

    D5=H9

    9=1+8

    D4=H7

    7=1+2+4

    D3=H6

    6=2+4

    D2=H5

    5=1+4

    D1=H3

    3=1+2

    因此:P5=D8+D6+D5+D3+D2+D1   由于不同信息位出现次数不同,因此加上P5

       P4=D8+D7+D6+D5

       P3=D8+D4+D3+D2

       P2=D7+D6+D4+D3+D1

       P1=D7+D5+D4+D2+D1

    2. 校验

    S5=P5⊕D8⊕D6⊕D5⊕D3⊕D2⊕D1   即:前面是数据自带的校验码,后面是我们求校验码的步骤,如果相同则结果为0,证明无错

    S4=P4⊕D8⊕D7⊕D6⊕D5

    S3=P3⊕D8⊕D4⊕D3⊕D2

    S2=P2⊕D7⊕D6⊕D4⊕D3⊕D1

    S1=P1⊕D7⊕D5⊕D4⊕D2⊕D1

    1. S5~S1=00000 无错
    2. 有一位不为0 某一位校验位出错或三位汉明码出错(信息位2与校验位1)
    3. 有两位不为0:两位汉明码出错(无法确认出错位置)
    4. 三位不为0:一位信息位出错或三位校验码出错 可以指出并纠正错误(将该位变反)
    5. 四位或五位不为0:检查系统硬件正确性

    循环冗余校验码

    CRC

    信息位为N位,校验位为K位,被称为(N+KN)码

    1.编码

    1. 将待编码的N位有效信息表示为多项式M(X)
    2. 将M(X)左移K位,得到M(X)×Xk,空出K位,拼装K位余数(校验位)
    3. 选取K+1位的产生多项式G(X),对M(X)×Xk模2除
    4. 将左移K位以后的有效信息与余数R(X)做模2加减,拼接为CRC码(N+K位)

    2.检验与纠错

    1. 将接收到的CRC码用约定的生成多项式去除
    2. 如果正确余数为0;某一位出错,余数不为0
    3. 不同位数出错,余数不同

    3.生成多项式的选择





-------------------------------- 作者在 2021-10-02 17:48:08 补充以下内容 --------------------------------

-120D = -01111000B(真值)

原码:11111000

反码:10000111

补码:10001000

移码:00001000

这样的移码也可以叫做偏移值为128的移码,也是标准移码,即10000000B+(-1111000B)=10000000B+(10001000B)=00001000B。这样移码就可以表示为原数的补码加上偏移值。在IEEE 754浮点数表示中移码是非标准的,它的偏移值为2k-1,也就是说对于单精度浮点数的偏移值为127。

-------------------------------- 作者在 2021-10-02 17:48:36 补充以下内容 --------------------------------

余三码(余3码)是由8421BCD码加上0011形成的一种无权码,由于它的每个字符编码比相应的8421码多3,故称为余三码。BCD码的一种。余3码的特点:当两个十进制数的和是9时,相应的余3码的和正好是15,于是可自动产生进位信号,而不需修正。0和9, 1和8,…..5和4的余3码互为反码,这在求对于模9的补码很方便。
文章评论,共0条
游客请输入验证码
最新评论
  • 阵背产拿:funcode小游戏插背景音乐能用吗😭