2-数据的表示与运算

数据的表示与运算

1.概述

二进制:0,1
八进制:0,1,2,3,4,5,6,7
十六进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
二进制–>八进制:每三位为一组,每组转换成对应的八进制符号
二进制->十六进制:每四位为一组,每组转换成对应的十六进制符号
八进制->二进制:每位八进制位数可以转成3位二进制数
十六进制->二进制:每位十六位进制位数可以转成4位二进制数
十进制->r进制:整数部分:除基取余法,先取的是最低位;小数部分:乘基取整法,先取的是最高位
真值:实际的带正负号的数值(人类习惯的样子)
机器数:把正负号数字化的数(存放到机器里的样子)

1.1 BCD码

用二进制编码的十进制,每四个二进制位对应一个十进制位
(1)8421码:权重为8421.------有权码
加法运算:按照二进制加法计算,若结果没落在合法范围内,结果+6修正(即+0110)
(2)余3码:8421码+3(0011)-----无权码
(3)2421码:权值为2421。04首位都是0,59首位都是1

1.2 字符与字符串

1.ASCII码
32-126可印刷字符,其余字符为控制、通信字符
数字48(0011 0000)-57(0011 1001)
大小字母65(0100 0001)-90(0101 1010)
小写字母97(0110 0001)-122(0111 1010)
2.汉字编码 GB2312-80:汉字+各种符号共7445个。区位码(94个区,每区94个位置)每个位置加上20H,变成国标码。+80H变成汉字内码
输入:输入编码
输出:汉字字形码。
3.字符串:常用“\0”最为结尾标志
大端模式:将数据的最高有效字节存放在底底址单元中
小端模式:将数据的最高有效字节存放在高地址单元

2.数据校验

2.1奇偶校验码

码字:若干位代码组成的一个字
码字逐位对比,具有不同的位的个数称为两个码字间的距离
码距:各合法码字间最小距离
奇校验码:整个校验码(有效信息位+校验位)中“1”的个数位奇数
偶校验码:整个校验码中“1”的个数位偶数
硬件实现:异或运算,得到的结果为校验位。接收端:所有位进行异或运算,若位1则代表出错
若有偶数个跳变,无法发现错误

2.2 海明校验码

1bit纠错,2bit检错,再首部加"全校验位",对整体进行偶校验位(分组不为0且全校验成功–重传;分组不为0且全校验不成功–更改)
2^k>=n+k+1
校验位要放到2^(i-1)的位置上
P1校验二进制第一位的数,P2校验二进制第2位的数,P3校验第3位
例n=4 k=3
H7 H6 H5 H4 H3 H2 H1 3:011;5:101;6:110;7:111
D4 D3 D2 P3 D1 P2 P1
p1校验H3 H5 H7; p2校验H3 H6 H7;p3校验H5 H6 H7
接收方校验,每个分组进行校验若为1则出错

2.3 CRC循环冗余码

数据发送方与接收方约定一个除数,k个信息位+r个校验位作为被除数,添加校验位后需保证除法的余数为0
例:生成多项式G(x)=x3+x2+1,信息码101001,求对应的CRC码
1.确定k,r以及生成多项式对应的二进制码 k=信息码的长度,r=生成多项式最高次幂
2.移位
3.模2除(被除数是信息码+校验码(此时为0),除数为生成多项式的多项式常数此题为1101),求得余数作为校验位,即最终位101001 001
4.检测与纠错。余数为0,代表没有出错,

可以检测所有奇数个错误;可以检测出所有双比特的错误;可检测所有小于等于校验长度的连续错误

3数据的表示与计算

3.1定点数的表示

定点数:小数点的位置固定Eg:常规计数
浮点数:小数点的位置不固定Eg:科学计数法
1.无符号数:整个机器字长的全部二进制位均为数值位,没有符号位,相当于绝对值(n位无符号数表示范围:0~2^(n)-1)
2.有符号数的定点表示
整数部分:符号位+数值部分+小数点位置(隐含)
小数部分:符号位+小数点位置(隐含)+数值部分(也称尾数)
若机器字长为n+1,则尾数占n位
3.原码:0有两种形式 +0:00000000;-0:10000000
定点整数:用尾数表示真值的绝对值,符号位“0/1”表示“正/负”。表示范围【-(2^(n)-1)) ~ 2^(n)-1)】
例 +19D=00010011;-19D=10010011
定点小数:用尾数表示真值的绝对值,符号位“0/1”表示“正/负”。表示范围【-(1-2^(-n)) ~ 1-2^(-n))】
例 +0.75D=01100000;-0.75D=11100000
4.反码:若符号位为0,则反码与原码相同;若符号位为1,数值为全部取反 ,反码0也有两个数值[+0:00000000;-0:11111111]
5.补码:正数的补码=原码;负数的补码=反码末位+1(要考虑进位)
补码的真值0只有一种表示形式即00000000.若定点整数补码为10000000则表示x=-2^7;若定点小数补码为10000000则表示x=-1
整数表示范围【-(2^(n)) ~ 2^(n)-1)】
小数表示范围【-(1 ~ 1-2^(-n))】
负数补码转换原码:尾数取反,末位+1
6.移码:在补码的基础上将符号位取反。注意移码只能用于表示整数
已知x补码求-x的补码:符号位与数值位全部取反,末位+1

3.2各种码的作用

1.原码进行加减运算:当符号位为0/1,硬件必须做出相应处理
2.补码可将减法操作转变为等价的加法
3.移码用来对比大小

3.3定点数的移位运算

1.算数移位
1).源码算数移位:通过改变各个数码位和小数点的相对位置,从而改变各数码位的位权
算术右移,高位补0,低位舍弃。若舍弃0相当于÷2;若舍弃位不为0,则会丢失精度
算术左移,低位补0,高位舍弃。若舍弃0相当于×2;若舍弃位不为0,则会出现严重误差
2).反码算数移位
整数:算术右移,高位补0,低位舍弃。算术左移,低位补0,高位舍弃
负数:算术右移,高位补1,低位舍弃。算术左移,低位补1,高位舍弃
3).补码的算数移位
整数:算术右移,高位补0,低位舍弃。算术左移,低位补0,高位舍弃
负数:最右边的1及其右边同源码。最右边的1的左边同源码
右移(同反码):高位补1,低位舍弃
左移(同原码):低位补0,高位舍弃

算术移位

2.逻辑移位
算术右移,高位补0,低位舍弃。算术左移,低位补0,高位舍弃===>无符号数的移位
举例:RGB颜色
3.循环移位
循环左移:高位舍弃的进入末尾
带进位位的循环左移:移除的位放到进位位,原进位位上补空缺

3.4加减运算&溢出判断

1.原码的加减运算
(1)加法:正(负)数+正(负)数=正(负)数;正数+负数:绝对值大的减绝对值小的,符号和绝对值同绝对值大的数
(2)减法:减法符号取反,转变为加法,即x原码+[-y补码]
2.补码的加减运算
符号位也会加入运算
3.溢出判断
上溢:超过127的数—正+正=负
下溢:超过-128的数—负+负=正
判断溢出方法:
1.采用一位符号位。V=ABS(非)+A(非)B(非)S;若V=0表示无溢出,V=1表示有溢出
2.采用一位符号位,根据数据位进位情况判断溢,异或方法

符号位的进位Cs最高数值位的进位C
上溢01
下溢10
3.双符号位。正数表示00,负数表示11。双符号位相同则没有溢出现象。实际存储只有1个符号位,运算时会复制一个符号位

双符号位补码又称“模4补码”
4.符号扩展:8位->16位:正整数:填零即可。负整数:原码补0,反码/补码补1
小数:尾部填零即可。负小数:原码尾部补0,反码/补码尾部补1

3.5 乘法运算

1.原码乘法
原码一位乘法:符号位异或运算,数值位取绝对值进行乘除计算。先加法后移位(逻辑右移)。最后根据异或结果修改符号位。当前运算位=1则ACC+[|x|],若=0,则ACC+0
2.补码乘法
补码一位乘法:移位是“算术右移”辅助位-MQ最低位=1时ACC+[x]补;=0则ACC+0;=-1则ACC+[-x]补
3.原码除法:
(1)恢复余数法:符号位进行异或操作.默认商1,若错则改成商0,并恢复余数(ACC此时的值+y的补码)。ACC/MQ中逻辑左移
(2)加减交替法(不恢复余数法):若余数为负,则可直接商0,余数逻辑左移,在加上余数
4.补码除法:
符号位参与运算.被除数/余数,除数采用双符号位
被除数和除数同号,则被除数减去除数,否则被除数加上除数
余数与除数同号,商1,余数左移一位减去除数;异号,商0,余数左移一位加上除数

3.6 数据的存储与排列

最高有效字节MSB,最低有效字节LSB
大端方式:MSB存在低地址,LSB存在高地址的位置,适合人类阅读
小端方式:MSB存在高地址,LSB存在低地址的位置,适合机器阅读

4.浮点数

4.1浮点数的表示

阶码:阶符+阶码数值部分,常用补码或移码表示定点整数
尾数:数符+尾数数值部分,常用原码或补码表示定点小数
浮点数尾数的规格化:最高位为0会变成无效值,丧失精度,因此尾数可以算术左移,阶码-1----左规。右规:算术右移,阶码+1
规格化浮点数的特点:
(1)原码表示尾数规格化:正数范围[1/2,(1-2(-n))],负数范围[-(1-2(-n)),1/2]
(2)补码表示尾数规格化:正数范围[1/2,(1-2(-n))],负数范围[-1,-(1/2+2(-n))]

4.2 IEEE754

移码=真值+偏置值
阶码全1和全0用作特殊用途
短浮点数尾数部分最高位隐藏表示1

类型数符阶码尾数数值总位数十六进制十进制
短浮点数float1823327FH127
长浮点数double11152643FFH1023
临时浮点数long double11564803FFFH16383

规格化短浮点数真值:(-1)s×1.M×2(E-127)
规格化长浮点数(-1)s×1.M×2(E-1023)
当阶码E全为0,尾数M不全为0时,表示非规格化小数,隐含位变为0
当阶码E全为0,尾数M全为0时,表示真值0;
当阶码E全为1,尾数M全为0时,表示无穷大
当阶码E全为1,尾数M不全为0时,表示非数值数“NAN”

4.3 浮点数的加减运算

1.对阶2.尾数加减3.规格化4.舍入(“0舍1入法”、“恒置1法”)5.判溢出

当阶码E全为0,尾数M不全为0时,表示非规格化小数,隐含位变为0
当阶码E全为0,尾数M全为0时,表示真值0;
当阶码E全为1,尾数M全为0时,表示无穷大
当阶码E全为1,尾数M不全为0时,表示非数值数“NAN”

4.3 浮点数的加减运算

1.对阶2.尾数加减3.规格化4.舍入(“0舍1入法”、“恒置1法”)5.判溢出

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值