数据表示、运算与校验

数值型数据的表示方法:

进位计数制:

​ 数制的基与权:

在任一数制中,每一个数位上允许使用的记数符号的个数被称为该数制的基数。

每一位都对应1个表示该位在数码中的位置的值,这个值就称为数位的权值。

数值转换:二进制、十进制、八进制、十六进制。

   十进制整数转换为任意进制整数的规则是:除(以)基取余;先余为低,后余为高;

   十进制小数转换为任意进制小数的规则是:乘(以)基取整;先整为高,后整为低。 

  二进制转换为八进制:3位一组;

  二进制转换为十六进制:4位一组;

  其他进制转换为二进制:按权展开相加法;

带符号数的表示:

​ 数的符号表示规则:“0“表示正号”+“,”1“表示负号”-“

​ 二进制数的码制:源码、反码、补码和移码。

规则:正数的原码、反码和补码相同;

​ 负数的反码是对原码除符号位按位取反,补码是原码除符号位按位取反再加一;

​ 原码:数值“0”有两种原码形式:[+0]原 = 0 0000000,[-0]原 = 1 0000000。

​ 反码:数值“0”有两种反码形式:[+0]反 = 0 0000000,[-0]反 = 1 1111111。

​ 补码(编码定义:[X]补 = X + 2^n,n为编码位数):数值“0”只有1种补码形式:[+0]补 = [-0]补 = 0 0000000。

​ 移码:移码常用来表示浮点数的阶码。

阶码一般为整数,故移码通常只用于表示整数。对定点整数X,它的移码是:[X]移 = 2^(n-1)+X,其中-2^(n-1)<X<2^(n-1),这里的n为 X原 位数。

​ 规则:正数将原码符号位变反,即得到移码。负数将原码连同符号位一起变反,末位再加1,即得到移码(与变补等效)。补码和移码:符号相反、数值位相同。

浮点数表示原理:

​ 浮点表示中,小数点的位置可按需浮动。

格式模型:

字长为8位的原码二进制浮点数由5位阶码+3位尾数。

​ 相同字长时,浮点数的表示范围更大、精度更高!

浮点数的机读(存储)格式:

R:阶码的底数,隐含约定为2。

E:阶码,定点整数,补码或移码表示,其位数决定了数值的范围。

M:尾数,为定点小数,原码或补码表示,其位数决定着数的精度;数符表示数的正负。

字符表示方法:

​ ASCII码(字符总数:128)

​ 存储宽度:7b(有效位) + 1b(奇偶校验位) = 8b

汉字的输入码:

​ 包括:数字码、拼音码、字形码

汉字的内码:

​ 用于汉字信息的存储、交换、检索等操作的计算机机内代码,一般用两个字节表示。

​ 国标码:10进制区位码转成16进制,再加2020H;

​ 机内码:国标码+8080H(与ASCII区别),或者区位码转成16进制+A0A0H

汉字字模码:

​ 字模码用点阵表示的汉字字形码,是汉字的输出形式。

数据处理与存储:

​ 移位操作:逻辑移位(数码位置变化),算术移位(符号位不变、数码位置变化)

数位扩展与压缩:

​ 符号扩展:直接把符号位(0/1)填充到扩展位;

​ 0-扩展:高位均全补0(针对无符号数);

​ 位数压缩:弃高位,留低位;

数据存储(按字节编址):

​ 小端模式:小地址单元存储数据的低位(即尾端);

​ 大端模式:大地址单元存储数据的低位(即尾端);

数据字的对齐:

​ 按边界对齐、不按边界对齐;

基本运算方法:

​ 定点数一般用补码表示,符号位参加运算;

补码的加减法:

运算流程:

逻辑实现:

溢出判断:

  溢出是指运算结果超出了数的表示范围。仅当两个符号相同的数相加或者两个符号相异的数相减才可能产生溢出。

  定点数加减法运算出现溢出时,运算结果是错误的。

  补码定点数加/减运算溢出判断的三种方法

1)采用一位符号位:只需要参加操作的两个数符号相同,结果又与操作数符号不同,则表示结果溢出;

2)采用双符号位(也称模4补码):运算结果的两个符号位相同,表示未溢出;运算结果的两个符号位不同,表示溢出,此时最高位符号位代表真正的符号;

3)采用一位符号位,根据数据位的进位情况判断溢出:符号位的进位 Cs与最高位的进位C1相同,未溢出,否则溢出。

数据的校验

奇偶校验:

增设一位校验位,从而使1的个数是奇或偶数。

​ 奇偶校验不能发现偶数位错,也无法定位错误。

海明校验:

​  海明码是一种多重分组奇偶检验;其原理是::在有效信息位中加入几个校验位形 成海明码,并把海明码的每一个二进制位分配到几个奇偶校验组中。当某一位出错后,就会 引起有关的几个校验位的值发生变化,这不但可以发现错误,还能指出错误的位置,为自动纠错提供了依据。

将代码组织为若干分组,每组进行奇偶检验;​ 能够检验是否出错,也能定位出错位;

循环冗余校验(CRC码):

​ 用待检验数据除以某个约定代码,能除尽则表明数据正确,否则通过循环移位校正出错位。

循环冗余校验码编码规律如下:

① 把待编码的N位有效信息表示为多项式M(X);

② 把M(X)左移K位,得到M(X)×XK,这样空出了K位,以便拼装K位余数(即校验位);

③ 选取一个K+1位的产生多项式G(X),对M(X)×XK作模2除;

④ 把左移K位以后的有效信息与余数R(X)作模2加减,拼接为CRC码,此时的CRC码共有 N+K位。 

 定点数的表示和运算

定点数的表示

  在定点表示法中约定:所有数据的小数点位置固定不变。通常,把小数点固定在有效数 位的最前面或末尾,这就形成了两类定点数:定点小数和定点整数。 

1.定点小数的表示范围

  定点小数即纯小数,小数点的位置固定在最高有效数位之前,符号位之后。

2.定点整数的表示范围

  定点整数即纯整数,小数点位置隐含固定在最低有效数位之后。

 定点数的运算 

1.定点数的移位运算

  定点数的移位运算包括算术移位、逻辑移位和循环移位。

算术移位:

   算术移位的对象是带符号数,在移位过程中必须保持操作数的符号不变。当左移一位时, 如不产生溢出,则数值 ×2;而右移一位时,如不考虑因移位舍去的末位尾数,则数值/2.

不同机器数算术移位后的空位添补规则

逻辑移位:

  把操作数当成无符号数看待。

  移位规则:逻辑左移时,高位移丢,低位添0;逻辑右移时,低位移丢,高位添0;不管左移还是右移都是添0。

循环移位:

  特点:移出的数位又被移入数据之中。

  大循环:带进位标志位CF;

  小循环:不带进位标志位。

  循环移位操作适合将数据的低字节与高字节数据互换

2.符号扩展 

  在计算机算术运算中,有时必须将采用给定位数表示的数转换成具有更多位数的某种表示形式。

  正数的符号扩展非常简单,原有形式的符号位移动到新形式的符号位上,新表示形式的所有附加位都用0进行填充。

  负数的符号扩展方法则根据机器数的不同而不同。原码表示负数的符号扩展方法与 正数相同,只不过此时符号位为1而已。补码表示负数的扩展方法是:原有形式的符号位移动 到新形式的符号位上,新表示形式的所有附加位都用1进行填充。 

原文地址:https://www.cnblogs.com/ST-2017/p/8470714.html