信息编码与数据表示

Posted cyylovesmile

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信息编码与数据表示相关的知识,希望对你有一定的参考价值。

第三章信息编码与数据表示


一.进位计数值


基本概念


基数R
指在这种进位制中允许使用的基本数码个数。基数为R的数制称为R进制数。 R进制数的主要特点就是逢R进1

权Wi
权也称位权,指某一位i上的数码的权重值,即权与数码所处的位置i有关。 Wi =Ri。

假设任意数值N用R进制数来表示,形式为:
N=(Dm-1Dm-2…D0 .D-1D-2 …D-k )R
其中,Di为该进制的基本符号,Di∈[0,R-1],i = -k, -k+1, ……,m-1;小数点在D0和D-1之间。

(11011.011)2=1×24+ 1×23+ 0×22+1×21+ 1×2-0+ 0×2-1 + 1×2-2 + 1×2-3=(27.375)10

(2345.459)10=2×103+ 3×102+ 4×101+5×100+ 4×10-1+ 5×10-2+ 9×10-3


二.不同进制转换

常见的进制###:

十进制(Decimal)、二进制(Binary)、八进制(Octal)、十六进制(Hexdecimal)数分别用D、B、Q、H来标志。
* 实例*
(2B.D)16=(2B.D)H=(43.8125)10=(53.64)Q

其他进制转化为十进制:

按权展开,加权求和
技术分享

实例
(5AC.E6)16= 5×162+ 10×161 +12×160 +14×16-1+ 6×16-2 =(1452.8984375)10

十进制变二进制,八进制,十六进制:

转换方法:可以分为以下两种方法
直接转换:十进制→二、八、十六进制
间接转换:十进制→二进制→ 八、十六进制

  • 十进制→R进制

转换方法
整数部分:除以R取余,先得低位,直到商为0。
小数部分:乘R取整,先得高位,直到积为0或者达到精度要求为止。
实例
技术分享
(123.75)10=( 173.6 )8

当小数部分不能整除为二进制时,则乘以2取整的过程中,积不会为0;或者当小数部分转化为二进制位数很长,这时由精度来决定二进制位数。

若要求精度大于10%,则表示“=”左右两边的十进制值的差的绝对值<10%。
即,10%>2-n
所以 n=4

  1. 二进制→八,十六进制
    二进制→八进制
    小数点为中心分别向两边分组,每三位一组,写出对应的八进制数字。(不够位数则在两边加0补足3位 )
    二进制→十六进制
    小数点为中心分别向两边分组,每四位一组,写出对应的十六进制符号。(不够位数则在两边加0补足4位 )
    实例
    (1011111.11)2=( 137.6 )8=( 5F.C )16
  2. 八进制→二进制
    将每位八进制数展开为3位二进制数,最高位和最低位的0可以略去。
  3. 十六进制→二进制:
    将每位十六进制数展开为4位二进制数,最高位和最低位的0可以略去。
    实例
    (765.23)8=( 111 110 101.010 011 )2
    (765.23)16=( 111 0110 0101.0010 0011 )2

计算机中为什么采用二进制表示数据?
1. 具有二值状态的物理器件容易实现。
2. 二进制的运算规则简单,硬件实现容易。
3. 具有逻辑特性,可代表“真假”、“是非”。
4. 抗干扰能力强、可靠性高


三.十进制数的编码


如何在计算机内使用二进制来表示十进制数据?
(1)二-十进制码(BCD码)
(2)十进制数串的表示方法

BCD(Binary Coded Decimal)码:

使用二进制来编码十进制数字0~9。
编码方法
一般使用4位二进制编码来表示1位十进制数字,在16个编码中选用10个来表示数字0~9。不同的选择构成不同的BCD码 。
分类

  • 有权码

编码的每一位都有固定的权值,加权求和的值即是表示的十进制数字。如8421码、2421码、5211码、4311码、84 -2-1码等。

  • 无权码

编码的每一位并没有固定的权,主要包括格雷码、余3码等。
技术分享


十进制数串的表示方法

字符串形式
用ASCII码来表示十进制数字或符号位,即1个字节存放1位十进制数字或符号位。
压缩的十进制数串形式
用BCD码来表示十进制数字,即1个字节存放2个十进制的数字;符号位放在最低位数字位之后,一般用C(12)表示正号,用D(13)表示负号。
例如 +258被表示成258CH,占用两个字节,-34被表示为034DH,也占用两个字节。
共同点
必须给出它在主存中的首地址和位长

采用十进制表示数据的优点是:

对于需要大量地进行输入输出数据而运算简单的场合,大大减少了十→二和二→十转换,提高了机器的运行效率;
十进制数串的位长可变,许多机器中规定该长度从0到31,有的甚至更长。不受定点数和浮点数统一格式的约束,从而提高了数据的表示范围和运算精度。


数据格式

计算机中参与运算的数据有两种:

  1. 无符号数据( Unsigned )
    所有的二进制数据位数均用来表示数值本身,没有正负之分。

  2. 带符号数据( Signed)
    二进制数据位,包括符号位和数值位。计算机中的带符号数据又称为机器数。

机器数

把“+”、“-”符号代码化,并保存在计算机中的数据。
机器数的特点

  1. 机器数的表示范围受计算机机器字长的限制。
  2. 符号必须数值化。
  3. 机器数的小数点是用规定的隐含方式表达的。

真值:

是指机器数所真正表示的数值,用数值并冠以“+”、“-”符号的方法来表示。

机器数的编码方法

:原码、反码、补码、移码。

计算机硬件如何区分它们是无符号数据还是带符号数据的呢?
根据执行不同的指令

小数点的表示方法
在机器数中,小数点及其位置是隐含规定的;有两种隐含方式:
定点数:小数点的位置是固定不变的
浮点数:小数点的位置是浮动的
定点机器数分为定点小数、定点整数两种。
浮点机器数中小数点的位置由阶码规定,因此是浮动的。
技术分享


定点机器数的小数点的位置是固定不变的,可以分为两种:
定点小数:用于表示纯小数,小数点隐含固定在最高数据位的左边,整数位则用于表示符号位。
定点整数:用于表示纯整数,小数点位置隐含固定在最低位之后,最高位为符号位。

原码表示法

表示方法
最高位表示数的符号,其他位表示数值位。
符号位
0——正数,1——负数。
数值位
绝对值相同
实例
例1:X=1011,Y=-1011,则:
[X]原=0,1011 ; [Y]原= 1,1011 ;
例2:X=0.1101,Y=- 0.1101,则:
[X]原=0.1101 ;[Y]原= 1.1101 ;
例3: X=1011, Y=- 0.1101,求X和Y的8位原码机器数。
[X]原=0,0001011 ;[Y]原= 1.1101000 ;
0 的表示
0 的原码表示有两种形式,即分别按照正数负数表示。
[+0]原= 00…0 [-0]原= 10…0
表示范围:对于n+1位原码机器数X,它所能表示的数据范围为:
定点整数:-(2^n-1)≤X ≤ 2^n-1
定点小数:-(1-2^-n)≤X ≤ 1-2^-n
溢出:当机器遇到一个超出它的机器数表示范围的数据


反码表示

表示方法
最高位表示数的符号,其他位表示数值位。
符号位
0-正数,1-负数。
数值位
正数时,与绝对值相同;负数时,为绝对值取反
X=1011,Y=-1011,则:
[X]反= 0,1011 ;[Y]反=1,0100 ;
例2:X=0.1101,Y=- 0.1101,则:
[X]反=0.1101 ;[Y]反=1.0010 ;
例3: X=1011, Y=- 0.1101,求X和Y的8位反码机器数。
[X]反=0,0001011 ;[Y]反=1.0010111 ;
0 的表示
0 的反码表示有两种形式,即分别按照正数和负数表示。
[+0]反= 00…0 [-0]反= 11…1
表示范围
对于n+1位反码机器数X,它所能表示的数据范围为:
定点整数
-(2^n-1)≤X ≤ 2^n-1
定点小数
-(1-2^-n)≤X ≤ 1-2^-n


补码表示

表示方法
最高位为符号位,其他位为数值位。
符号位
0-正数,1-负数。
数值位
正数时,与绝对值相同;负数时,为绝对值取反后,末位加1
简单算法
负数时候,从后往前看,遇到第一个1,这个1以及以后的1后不变,前面求反。
实例
例1:X=1011,Y=-1011,则:
[X]补= 0,1011;[Y]补=1,0101;
例2:X=0.1101,Y=- 0.1101,则:
[X]补= 0.1101;[Y]补=1. 0011 ;
例3: X=1011, Y=- 0.1101,求X和Y的8位补码机器数。
[X]补= 0,0001011;[Y]补=1.0011000;
0 的表示
0 的补码表示形式是唯一的,即分别按照正数和负数表示均一致,为全零。
[+0]补= 00…0 [-0]补= 00…0
表示范围
对于n+1位补码机器数X,它所能表示的数据范围为:
定点整数
-2^n≤X ≤ 2^n-1
定点小数:-1≤X ≤ 1-2^-n
计算机中的整型数据(int)均用补码来表示。


移码表示

表示方法
最高位为符号位,其他位为数值位。
符号位
1-正数,0-负数。
数值位
正数时,与绝对值相同;负数时,为绝对值取反后,末位加1
即负数时候,为补码的符号位取反
实例
例1:X=1011,Y=-1011,则:
[X]移=1,1011 ;[Y]移=0,0101;
例2:X=0.1101,Y=- 0.1101,则:
[X]移= 1.1101 ;[Y]移= 0.0011 ;
例3: X=1011, Y=- 0.1101,求X和Y的8位移码机器数。
[X]移=1,00001011;[Y]移= 0.00110000 ;
0 的表示
0 的移码表示形式是唯一的,即分别按照正数和负数表示均一致。
[+0]移= 10…0 [-0]移= 10…0
表示范围
对于n+1位移码机器数X,它所能表示的数据范围为:
定点整数
-2^n ≤X ≤ 2^n-1
定点小数
-1≤X ≤ 1-2^-n
移码通常作为浮点数的阶码,一般只用来表示定点整数。


技术分享


定点机器数转换


机器数转换为真值
四种定点机器数转换为真值的方法要点是
首先根据机器数的符号位确定真值的正负然后对照机器数的定义和表示,反方向求出真值的绝对值
机器数之间的相互转换
原码、补码、反码和移码之间的相互转换,最简单的方法是先求出它们的真值,然后再转换为另一种表示方法。


技术分享


实例
技术分享





















































































































































以上是关于信息编码与数据表示的主要内容,如果未能解决你的问题,请参考以下文章

20145311 《信息安全系统设计基础》第三周学习总结

2017-2018-1 20155314 《信息安全系统设计基础》第11周学习总结

20145234黄斐《信息安全系统设计基础》第三周学习总结

深入理解计算机系统--信息的表示和处理

2018-2019-1 20165228 《信息安全系统设计基础》第二周学习总结

LF D2 第2章 数据类型 字符编码