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

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


一.进位计数值


基本概念



基数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

移码通常作为浮点数的阶码,一般只用来表示定点整数。




定点机器数转换



机器数转换为真值

四种定点机器数转换为真值的方法要点是

首先根据机器数的符号位确定真值的正负然后对照机器数的定义和表示,反方向求出真值的绝对值

机器数之间的相互转换

原码、补码、反码和移码之间的相互转换,最简单的方法是先求出它们的真值,然后再转换为另一种表示方法。





实例

时间: 2024-10-02 06:33:43

第三章信息编码与数据表示(一)的相关文章

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

2019/03/10 09:12 3.1数值数据的表示 1)计算机使用二进制表示数据的原因: <1>比较容易找到二值状态的物理器件来表示数据和实现存储. <2>二值性使二进制的存储具有抗干扰能力强,可靠性高等优点. <3>运算规则十分简单,便于使用电子器件和线路加以实现. <4>二进制中的0和1与逻辑推理中的真假对应. 2)不同数制之间的转化:P67(教材) 3)十进制的编码: <1>二-十进制码(BCD):分为有权码和无权码,有权码没有申明一般

构建之法前三章读后感

一. 软件作为一个产品,在提供用户使用前经历了许多工序,我们用工程的方式将开发软件的工序,过程加以工程化,系统化.成立了一套完整的体系后,有利于帮助我们开发软件,乃至于大型的系统. 软件具有一定的特殊性,使得软件工程师们做开发提升了一定的难度,但软件工程有助于软件系统的开发,帮助工程师们设计,构建,测试和维护软件.所以,软件工程的最终目的是帮助工程师们创造“足够好”的软件,提高软件的质量,用户满意度,可靠性,可维护性等. 第一章问题:怎么才算是一个真正的软件工程师? 二.   一个优秀的软件,通

0320 《构建之法》前三章观后感

第一章.为我们解释什么是软件,什么是软件工程,读完这章对这些概念有一定的认识这章让我明白,代码不能盲目的敲,好的软件并非两三天,并非一两个人就能赶出来的,需要大家的精诚合作.同时,在编写程序之前,还需要做一系列的分析.设计,要满足客户的需求,后续还要对软件进行测试.维护等.在这之前,我一直觉得能把程序运行,能有正确的结果,那就完成任务了,可这只是整个软件流程的一部分而已.看了邹老师的书,才知道其实创新有很多的方面,除了技术,还有商业思路,差异化等等,这些都给了我很大的感触,作为一名程序员,我们不

家庭作业——第三章

第三章家庭作业    3.69和3.70 3.69 A:long trace(tree_ptr tp)    {        long ret = 0;        while(tp != NULL)        {           ret = tp->val;           tp = tp->left;        }        return ret;    } B:作用是从根一直遍历左子树,找到第一个没有左子树的节点的值. 3.70 A:long traverse(t

第三章 Linux操作系统的安装

第三章 Linux操作系统的安装 因为笔者一直都是使用CentOS,所以这次安装系统也是基于CentOS的安装.把光盘插入光驱,设置bios光驱启动.进入光盘的欢迎界面. 其中有两个选项,可以直接按回车,也可以在当前界面下输入 linux text 按回车.前者是图形下安装,可以动鼠标的,后者是纯文字形式的.建议初学者用前者安装.直接回车后,出现一下界面: 这一步是要提示你是否要校验光盘,目的是看看光盘中的安装包是否完整或者是否被人改动过,一般情况下,如果是正规的光盘不需要做这一步操作,因为太费

《C#高级编程》【第三章】对象和类型 -- 学习笔记

在看过C++之后,再看C#的面向对象感觉就不难了,只是有一些区别而已. 1.类定义 使用class关键字来声明类,其和C++不同的地方是在大括号之后不需要冒号 class 类名 { //类的内部 } //C++这里有一个冒号,而C#没有 2.类成员 3.字段与属性 首先我们先区分一下C#数据成员中的字段.常量与事件成员.字段.常量是与类的相关变量.事件是类的成员,在发生某些行为时(如:改变类的字段或属性,或进行某种形式的用户交互操作),它可以让对象通知调用方. 那么现在我们在来看看字段与属性,属

标准库》第三章 包装对象和Boolean对象

第三部分  标准库 ***************第三章   包装对象和Boolean对象******************* 一.包装对象的定义[1]有人说,JavaScript语言"一切皆对象",数组和函数本质上都是对象,就连三种原始类型的值--数值.字符串.布尔值--在一定条件下,也会自动转为对象,也就是原始类型的"包装对象". 所谓"包装对象",就是分别与数值.字符串.布尔值相对应的Number.String.Boolean三个原生对象

2017.06.29数据挖掘基础概念第二.三章

第二章21.研究的属性类型标称属性:值是一些符号或事物的名称,代表某种类型.编码或状态二元属性:是一种标称属性,只有两个类别或状态,又称布尔属性序数属性:是一种属性,其可能的值之间具有有意义的序或秩评定,但是相续值之间的差是未知的数值属性:是定量的,即他是可度量的量,可用整数或实数值表示(区间和比率标度)22.数据散布常见的度量量(数据如何分散的方法/识别离群点)极差 四分位数.四分位数极差.五数概括图.方差和标准差23.审视数据的图形条形.饼图.线图.分位数图.分位数-分位数图.直方图和散点图

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一、 除夕诗词概述 二、元日诗词概述 三、 元宵诗词概述 第二节:春节古诗词拾萃

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一. 除夕诗词概述 二.元日诗词概述 三. 元宵诗词概述 第二节:春节古诗词拾萃 一.腊祭诗词 二.祭灶诗词 三.除夕诗词 四.元旦诗词 五.人日诗词 六.元宵诗词 第一节:春节古诗词概述 中国的春节,作为除旧迎新的节日,时间相当长,从年前的腊月二十三,天空中就似乎弥漫了节日的气息.这种节日的气氛,在保持传统风俗较好的地方,甚至会持续到二月二龙抬头的时候,但欢度春节的高潮,应该说是自除夕始一直到上元之夜.因此,历代歌咏和反