知识点一:定点机器数表示
小数,整数的原码,反码,补码,移码表示法
机器数:机器识别的无符号指令。例如01011B
真值:带符号。例如+1011B
正数的原码,反码,补码完全相同
负数的原码:二进制真值表示,符号位+变0,符号位-变1
反码:除符号位之外其他位对原码取反
补码:在反码的基础上末尾加上1
移码:在补码的基础上符号位取反,其他的数值位相同
在补码中,0只有一种表示方式,但在原码和反码中,0有+0和-0两种表示方式,所以选择补码更有利于数据表示
例题:学习通第三章作业1:
T4,求机器数的二进制真值
T5,原码,反码,补码表示的定点小数和定点整数
例1:[x]补=0.1001
小数点前的数字表示符号 -为1,+为0
所以这是一个正数
真值为0.1001(注意真值不等于原码,不要混淆)
例2:[x]补=1.1001
反码为 1.1000,原码为 1.0111,转换为真值:
这是一个负数,1表示 --,即 真值为–0.0111
例3:[x]原=1.1101
1表示–,转化为真值即:-0.1101
例4:[x]反=0.1101
0表示正数,正数原反补码相同(不要混淆),故原码为0.1101,故真值为+0.1101
例5:[x]移=11001
[x]补=01001,0表示正数,所以真值X为+1001
例6:[x]移=01001
[x]补=11001,1表示负数,[x]反=11000,[x]原=10111,所以真值X为-0111
8位字长:
例:[x]补=10000000,
1表示负数,[x]反=01111111,[x]原=10000000
故表示的X真值为-10000000B
例:[x]反=10000000
1表示负数,[x]原=01111111,故表示的X真值为-01111111
例:[x]移=10000000
,[x]补=00000000,0表示正数,故表示的X真值为+00000000B
原码,反码,补码的计算:
[x]原+[Y]原 运算前要判断符号是否相同,同为加,异为减
反码运算相对原码简单。符号位参与运算,只需设置加法器,符号位的“进位”位需加到最低位
补码的运算简单,只需要设置加法器
知识点二:数值数据表示
知识点三:校验码:奇偶校验码,循环冗余校验码
定义:奇偶校验码中,若1的个数为偶数,则为偶校验码,若1的个数为奇数,则为奇校验码
校验电路中1个数为奇数,则为奇校验,1个数为偶数,则为偶校验
工作原理:在编码中加入一位冗余位,编码中出现一个错误,奇偶性发生变化时,就成为非法代码。
有奇数个“1”的字节的和为1,有偶数个“1”的字节的和为0
特点:
1,编码与检错简单
2,编码效率高
3,不能检测偶数位错误,无错结论不可靠
4,没有纠错能力
码距的概念:任意两个合法编码之间不同二进制位数的最小值,例如:0011与0001的码距为1
例如:字符A的ASCII码为41H(十六进制,十进制为65),化为二进制为1000 0001,有偶数个1。
若采用奇校验法,在最前面加上一个1后,变成1 1000 0001 ,化为16进制,即c1H
若采用偶校验法,在最前面加上一个0,变成0 1000 0001,化为16进制,即41H
字符A的奇校验码为C1H
偶校验码为41H
总结:求奇校验码用奇校验法,求偶校验码用偶校验法
知识点四:浮点机器数表示方法
浮点机器数:即既有整数部分又有小数部分的数
IEEE754标准采用的格式:
单精度:8位偏指数E + 23位有效位数M
双精度:11位偏指数E + 52位有效尾数M
指数采用偏移值(即阶码部分采用移码,但尾数、阶码均用补码表示),其中单精度偏移值为127,双精度为1023,将浮点数的阶码值变成非负整数,便于浮点数的比较和排序
IEEE754尾数形式为1.XXXXXX。其中M部分保存的是XXXXXX(1被隐藏),从而可保留更多的有效位,提高数据表示的精确度
浮点数据表示,即把数的范围和精度分开来表示
使用场合:数的表示范围超过了定点数能表示的范围时
表示的浮点数:N=M x(2的E次方)
E:表示阶码位数,决定数据的范围
M:表示尾数位数,决定数的精度
在字长确定后,如果想表示更大的数,就必须牺牲精确度
上面为单精度,下面为双精度
当Ms=0 N为正数,Ms=1,N为负数
例: 若X和Y均是IEEE 754 标准的单精度浮点数,
(1)若X浮点数的存储形式为41360000H,求X的真值。
(2)若Y=-135.625,求Y的浮点数表示。
1,浮点数的尾数为零
2,当阶码的值遇到比它能表示的最小值还要小时(阶码负溢出)
浮点数的规格化:
对于非规格化浮点数,可以通过修改阶码和左右移尾数的方法来使其变为规格化浮点数,这个过程叫做规格化;
小数点不动,尾数右移1位,阶码加1的规格化,则称为右规 小数点不动,尾数左移1位,阶码减1的规格化,则称为左规
例题:X=+55.75,Y= -27/128, 请写出下列X和Y的规格化浮点数形式。
规格化只需将小数表示成0.XXX即可
小数点移动了六位,6转换为二进制即110
典例:
十进制数-0.1953125表示为二进制数规格化浮点数是多少,设浮点数的格式为阶符、尾符各为1位,阶码为3位,位数为7位,答案是E9CH
解答:
(1)转换成二进制数,再规格化:-0.1953125 D=-0.0011001B=-0.11001*2^(-2)
注:规格化只需将二进制数写成尾数为0.1*****(即0.1开头)此种格式即可。
(2)阶码为-2,用3位二进制表示为-010B(注:前面补0),求出补码为1110。
(3)7位尾数为-0.1100100(注:后面补0),求出补码为10011100。 (4)规格化浮点数形式为:阶码+尾数,即为1110
1001 1100,转换为十进制为E9C。
知识点五:非数值数据表示与编码
1,字符编码
ASCII码:7bit表示一个字符,一个字符使用一个字节来表示
2,汉字编码
字符数据通常采用7位的ASCII码来表示
汉字的输入编码用于使用西文标准键盘输入汉字,
汉字的机内码则用于汉字的存储、检索和处理,
汉字的字模码则用于汉字的显示和打印输出。
例题: 在一个应用系统中,需要构造一个包含了100个汉字的汉字库,假设采用16×16的汉字字形,问:
(1)该汉字库所占存储容量是多少字节?
(2)一篇由50个汉字构成的短文,需要占用多少字节的存储容量来存储其纯文本?
汉字库中存放汉字字模码,容量=存储每个点阵的字节数 x 汉字数 x 点阵方法数
100个汉字的汉字库存储容量为:16×2×100=3200字节;50个汉字构成的短文,需要占用2 ×50=100字节。