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

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

3.1 数值数据的表示

3.1.1 进位计数制

最重要的其实就是基数和各数位的权。
举个栗子
(11011)=1X2+1X2+0X2+1x2+1X2=16+8+0+2+1=27

3.1.2 不同数制之间数的相互转换

1.二进制数转换成十进制数

本质就是加权求和。上面举的栗子就是二进制数转换成十进制数了!


再来个栗子:
(110.11)2=1X2+1X2+0X2+1X2+1X2=4+2+0.5+0.25=6.75


同样,其他进制转换成十进制都是同样的道理。

2.十进制数转换成二进制数


分为整数和小数。给个操作描述。


十进制整数转换为二进制数的方法是:
除以2取余数,先得者为整数的低位。除以2取余数后,继续对商做除法,直至商为0。(除2取余法)


十进制小数转换为二进制数的方法是:
乘以2取整数,先得者为小数的高位。乘以2取整数后,继续对小数做乘法,直至积为0或小数位数已满足精度方面的要求。(乘2取整法)


值得注意的是,并不是所有的十进制小数都可以完全等价地转换为二进制数,即有可能乘积不为0,此时必须使用精度来控制转换结束。


上面的话对于完全没了解的朋友可能有点抽象。不过没关系,我们来看题目理解一下就好。


![image.png](https://img-blog.csdnimg.cn/img_convert/5ebdf34c0ab73973e97d56e7e5b352da.png#align=left&display=inline&height=43&margin=[object Object]&name=image.png&originHeight=86&originWidth=728&size=38071&status=done&style=none&width=364)
![image.png](https://img-blog.csdnimg.cn/img_convert/1edbc30791984fe06a008f32a3cace1d.png#align=left&display=inline&height=151&margin=[object Object]&name=image.png&originHeight=302&originWidth=671&size=72988&status=done&style=none&width=335.5)
看图!肯定理解啦!图片万岁!

3.二进制数与八进制数、十六进制数之间的转换

注意一下它们之间的关系。
8=23,16=24
所以二进制数凑3位可为8进制,凑4位可为16进制。
那么怎么凑呢?(这个很重要,常错点)


二进制数转换为八进制数:从小数点开始,向两边每3位划分为一组,整数部分不足3位的,在前面补“0”,小数部分不足3位的,在后面补“0”,然后写出各组的八进制数。


二进制数转换为十六进制数:从小数点开始,向两边每4位一组,整数部分不足4位的,在前面补“0”,小数部分不足4位的,在后面补“0" ,然后写出各组的十六进制数对应的符号。


所以八进制数、十六进制数转二进制就也很简单啦!
不就是八进制数每一位数字转成3位二进制数,十六进制数每一位数字转成4位二进制数嘛!


上题!
![image.png](https://img-blog.csdnimg.cn/img_convert/f2b4a1a03eca56fa3fad4f8ccce458fb.png#align=left&display=inline&height=80&margin=[object Object]&name=image.png&originHeight=160&originWidth=769&size=63638&status=done&style=none&width=384.5)

3.1.3 十进制数的编码

1.二-十进制码(BCD码)

2.十进制数串的表示方法

这个看看课本吧。这里就不写了,遇到有题目再写?(好像也没啥个题目)

3.2 数据格式

3.2.1 机器数

啥叫机器数:数值数据在计算机中的表示形式。


机器数的特点是:

  • 表示的数值范围受计算机字长的限制。
  • 机器数的符号位必须被数值化为二进制的0和1。
  • 机器数的小数点是用规定的隐含方式来表达的。


机器数吧又分为无符号数据和带符号数据,那么当机器字长相同时,两所表示的数值范围必定不一样啦,毕竟带符号数据还有拿出一位来表示符号嘞。

3.2.2 小数点的表示方法

在机器数中,小数点及其位置是隐含的,啥意思?就是计算机中没有专用的部件是用来表示小数点的。

1. 定点表示法

定点表示法约定所有机器数的小数点的位置是固定不变的。
可以分为定点整数、定点小数。
具体怎么实现看后面吧,这里就有个概念就行。

2. 浮点表示法

数据的小数点位置由阶码规定,是浮动的。阶码就是幂的数值啦。
(2,那阶码就是4呀)


浮点数由3个部分来决定其数值大小:

  • 阶码E (定点整数)
  • 尾数M(定点小数)
  • 阶码的底R (隐含表示,一般约定为2、8或16)


![image.png](https://img-blog.csdnimg.cn/img_convert/f6d5a071a144f42b7567bd191d6f6af5.png#align=left&display=inline&height=62&margin=[object Object]&name=image.png&originHeight=62&originWidth=313&size=11003&status=done&style=none&width=313) # 3.3 定点机器数表示方法 ## 3.3.1 原码表示法 ### 1.原码数学定义 后面再来补充吧 ### 2.原码表示方法 正数符号位:0;负数符号位:1; #### 定点整数 ![image.png](https://img-blog.csdnimg.cn/img_convert/15338dc42fb2f248ff5be7647bc80aa7.png#align=left&display=inline&height=52&margin=[object Object]&name=image.png&originHeight=58&originWidth=346&size=13146&status=done&style=none&width=312) #### 定点小数 ![image.png](https://img-blog.csdnimg.cn/img_convert/1abdf7e6d5c27a792de490602703d2a1.png#align=left&display=inline&height=25&margin=[object Object]&name=image.png&originHeight=31&originWidth=360&size=6889&status=done&style=none&width=296)
![image.png](https://img-blog.csdnimg.cn/img_convert/8094fde53e845a322038bdb74afed9c7.png#align=left&display=inline&height=27&margin=[object Object]&name=image.png&originHeight=33&originWidth=361&size=6934&status=done&style=none&width=295) ### 3.原码特点 #### 真值“0”的表示 可以使用正数的原码定义公式来表示,也可以使用负数的原码定义公式来表示。
![image.png](https://img-blog.csdnimg.cn/img_convert/9d2bbc502efed6b7fa543986569ce3c1.png#align=left&display=inline&height=26&margin=[object Object]&name=image.png&originHeight=32&originWidth=372&size=6049&status=done&style=none&width=308) #### 表示范围 这个啊......等啥时候想补充了再补充(狗头 #### 原码运算 符号位单独处理,不能参加运算,参加运算的是绝对值。
(核心,记住这个就行,下面的这段文字都可以不看!)

对于加减运算,首先根据符号位决定进行的是绝对值的加还是减,然后进行绝对值的加减运算,最后根据绝对值的大小决定结果(和或者差)的符号。

对于乘除运算,首先进行绝对值的乘除运算,然后根据符号位决定结果的符号。 ## 3.3.2 补码表示法 ### 1.补码数学定义 同理,后面再补充。 ### 2.补码表示方法 **定点整数**
**![image.png](https://img-blog.csdnimg.cn/img_convert/edfe55b9ae85bc5575d8537ed4d414ea.png#align=left&display=inline&height=42&margin=[object Object]&name=image.png&originHeight=61&originWidth=380&size=17747&status=done&style=none&width=263)**
**定点小数**
**![image.png](https://img-blog.csdnimg.cn/img_convert/23a9594b1b77ac39c46e34e1d7099399.png#align=left&display=inline&height=38&margin=[object Object]&name=image.png&originHeight=62&originWidth=463&size=22708&status=done&style=none&width=286)**
**
有个小办法!
那就是当数值为负数的时候,从右边往左边扫,遇到第一个1不变,其余的都是其相反数!

啊来个栗子说明吧!

[-1110]=1,0010
看红色的那个1,就是从右边往左边扫遇到的第一个1,从这个1往左,其余数值都要变成相反数。往右就是不变的啊。 ### 3.补码特点 #### 真值“0”的表示 不管是正0还是负0,数值都是一样的嗷。
![image.png](https://img-blog.csdnimg.cn/img_convert/24d3798917dfacbb5b2803c5bea41861.png#align=left&display=inline&height=17&margin=[object Object]&name=image.png&originHeight=34&originWidth=239&size=4483&status=done&style=none&width=119.5) #### 表示范围 这个啊......等啥时候想补充了再补充(狗头 #### 补码运算 补码的符号位同数值位一起参加运算。
~~(可以将减法转换为加法,这个在原码补码除法算法里面很好运用了!)~~ ## 3.3.3 反码表示法 ### 1.反码数学定义 同理,后面再补充。 ### 2.反码表示方法 **定点整数**
**![image.png](https://img-blog.csdnimg.cn/img_convert/6097bd33527ae9b5a66a26380530197d.png#align=left&display=inline&height=24&margin=[object Object]&name=image.png&originHeight=31&originWidth=350&size=6639&status=done&style=none&width=271)**
**![image.png](https://img-blog.csdnimg.cn/img_convert/ae89c302dd412421cc0bd539bf495792.png#align=left&display=inline&height=25&margin=[object Object]&name=image.png&originHeight=32&originWidth=344&size=7332&status=done&style=none&width=273)**
**定点小数**
**![image.png](https://img-blog.csdnimg.cn/img_convert/866ae8f9ea4e879a1f3b84f4e522301a.png#align=left&display=inline&height=44&margin=[object Object]&name=image.png&originHeight=58&originWidth=373&size=14456&status=done&style=none&width=285)** ### 3.反码特点 #### 真值“0”的表示 ![image.png](https://img-blog.csdnimg.cn/img_convert/7885accca113d41cca652d341435f4a6.png#align=left&display=inline&height=33&margin=[object Object]&name=image.png&originHeight=38&originWidth=368&size=6189&status=done&style=none&width=320) #### 表示范围 这个啊......等啥时候想补充了再补充(狗头 #### 反码运算 记住反码的符号位和数值位一同参加运算就行啦(很少用反码进行运算的啦! ## 3.3.4 移码表示法 ### 1.移码数学定义 同理,后面再补充。 ### 2.移码表示方法 不管是定点整数还是定点小数,只需要对补码的符号位取反就可以啦!(快记住补码表示方法

记住!
移码正数符号位:1;负数符号位:0; ### 3.移码特点 #### 真值“0”的表示 ![image.png](https://img-blog.csdnimg.cn/img_convert/1fe8d64da21f32e65f081d7783c3080f.png#align=left&display=inline&height=27&margin=[object Object]&name=image.png&originHeight=27&originWidth=219&size=4524&status=done&style=none&width=219) #### 表示范围 这个啊......等啥时候想补充了再补充(狗头 #### 移码运算

因为移码表示和补码表示只有符号位是相反的,所以使用移码可以很方便地进行浮点数阶码的比较运算:无论正负,从符号位开始,逐位比较大小即可;
(就很方便!负数的原码补码反码就不能这样直接比较!移码就可以!)


对于移码,加减运算也类似于补码,移码的符号位同数值位一起参加运算,而且也可以将减法转化为加法,但是运算结果需要把符号位取反。

3.3.5 定点机器数转换

这个真就会了上面的知识点后,就是熟练度的问题了!多做做题目,就有那个feel了!真的!

3.4 浮点机器数表示方法

3.4.1 浮点数的格式


开始之前,还是看看课本基本概念,最后再上图理解。

阶码E (符号位+数值位)

定点整数,阶码的数值大小决定了该浮点数实际小数点位置与尾数的小数点位置(隐含)之间的偏移量。
阶码的符号称为阶符。
阶符为正,表明实际小数点位置在尾数的小数点位置的右边;
阶符为负,表明实际小数点位置在尾数的小数点位置的左边;
![image.png](https://img-blog.csdnimg.cn/img_convert/b838bdd6e7def1c11c6d8b3185fe8042.png#align=left&display=inline&height=253&margin=[object Object]&name=image.png&originHeight=298&originWidth=380&size=19286&status=done&style=none&width=323)

尾数M(符号位+数值位)

定点小数,决定了浮点数有效数值的精度
尾数的符号称为数符
数符代表浮点数的正负

阶码的底R

常数,在一台机器中规定为隐含
![image.png](https://img-blog.csdnimg.cn/img_convert/db8a582755e2966d8146ba7dff1708d9.png#align=left&display=inline&height=96&margin=[object Object]&name=image.png&originHeight=96&originWidth=294&size=21835&status=done&style=none&width=294)
下面这张图片也了解以下。(这个知识点是浮点数规格化表示的一个前提知识点)
![image.png](https://img-blog.csdnimg.cn/img_convert/dc355f15141d6449190bd6f8217a8f3d.png#align=left&display=inline&height=37&margin=[object Object]&name=image.png&originHeight=73&originWidth=755&size=51683&status=done&style=none&width=377.5)

3.4.2 浮点数的规格化表示

采用规格化形式表示浮点数,其实就是将尾数的绝对值限定在某个范围之内!


等等,看看前面,是不是提到尾数决定了浮点数有效数值的精度!
说明什么?


浮点数的规格化表示就是根据要求对浮点数的精度进行变化呀!


IEEE754是比较常见的浮点数标准格式。


![image.png](https://img-blog.csdnimg.cn/img_convert/86f055457a4a009ed731a00a3e03f036.png#align=left&display=inline&height=134&margin=[object Object]&name=image.png&originHeight=196&originWidth=643&size=59288&status=done&style=none&width=440)
浮点数是否溢出是由阶码决定的,而非尾数,尾数发生溢出可以通过右规处理,只有阶码发生溢出,浮点数才会被判定为溢出。




来个例题吧,我自己看上面总是也有点懵,有时就记不住。(是我傻


先来个做题思路。

  1. 根据浮点数格式要求写出阶码和尾数的真值。
  2. 根据要求,写出阶码和尾数对应的机器数。

![image.png](https://img-blog.csdnimg.cn/img_convert/7ce002541b004858909ee606369621ee.png#align=left&display=inline&height=245&margin=[object Object]&name=image.png&originHeight=429&originWidth=770&size=158145&status=done&style=none&width=440)
(嗷,尾符就是数符啦!打错了!)
![image.png](https://img-blog.csdnimg.cn/img_convert/d417ba609a6baff1fd7d3deda6fbcef9.png#align=left&display=inline&height=49&margin=[object Object]&name=image.png&originHeight=55&originWidth=493&size=21110&status=done&style=none&width=440)
![image.png](https://img-blog.csdnimg.cn/img_convert/c094700e501ad7842d50ea27aba666e6.png#align=left&display=inline&height=231&margin=[object Object]&name=image.png&originHeight=328&originWidth=624&size=122887&status=done&style=none&width=440)

3.4.3 浮点数的表示范围

以后再补充吧(逃

3.5 非数值数据的表示

3.5.1 字符编码

现在应用最广泛的是ASCII码(美国国家信息交换标准字符码)
ASCII码用7位二进制表示一个字符,因此可以128个常用字符。

3.5.2 汉字编码

以后再补充吧(逃

3.6 校验码

校验码:一种具有发现某些错误或自动改正错误能力的一种数据编码方法。


基本思想是“冗余校验”,即通过在有效信息代码的基础上添加一些冗余位来构成校验码。


这些冗余位又称为校验位,将其与有效信息按照一定的规律进行编码,形成校验码存储或发送。在读取或接收校验码时,再按统一约定的规律译码。


首先判断约定的规律是否被破坏:若被破坏,则表明收到的信息有错,对于只具有检错能力的校验码,则通知系统信息不可取;对于具有纠错能力的校验码,还可以纠正错误;若没有被破坏,则表明数据正确,再将校验码中的有效信息部分提取出来以供使用。


首先引出“码距"的概念。在一种编码中,在任何两个代码之间逐位进行比较,对应位值不同的个数,称为这两个代码之间的距离。


一种码制的码距则是指该码制中所有代码之间的最小距离。


一般的二进制编码的码距等于1,它不具有检错和纠错能力。比如,当4位二进制编码0000的某一位发生错误时,计算机无法判定它是否有错误,因为代码1000、0100、0010、0001也是合法的4位二进制编码。


当添加了一些校验位后,编码变长了,但是编码的个数没有变,编码的规律使得校验码的合法码字的码距扩大了,超过了1,此时,合法码中出现一位错误时就成为非法代码。


校验码的校验原理就是通过判断代码的合法性来检错的。因此,只有当码距大于等于2时,校验码才具有检.错能力;只有当码距大于等于3时,校验码才具有纠错能力。


校验码的检错纠错能力与码距的关系如”下。
①若码距d为奇数,如果只用来检查错误,则可以发现d-1位错误;如果用来纠正错误,则能够纠正(d-1)/2位错误。
②若码距d为偶数,则可以发现d/2位错误,并能够纠正(d/2-1)位错误

3.6.1 奇偶校验码(检错码)

以后补充(逃

3.6.2 海明校验码(纠错码)

以后补充(逃

3.6.3 循环冗余检验码(CRC码 纠错码)

以后补充(逃

3.7 现代计算机系统的数据表示

这里就看课本叭!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值