2.1
真值:正号和负号分别用“+”和“-”表示,数据位保持二进制值不变的数据表示方法。
机器数(机器码):数据在机器中的表示形式,是正负符号数码化后的二进制数据。
原码:正数符号用0表示,负数符号用1表示,数值位保持不变
反码:符号位与原码相同,真值为正数时,反码和原码相同;真值为负数时,反码数值位为真值数值位取反
补码: 真值为正数时,补码和原码相同;真值为负数时,对真值数据位从右到左顺序扫描,右起第一个1及其右边的0保持不变,其余各位取反
变形补码:用两个二进制位来表示数字的符号位,其余与补码相同。即“00”表示正,“11”表示负。
移码:用于定点整数的表示,通常用于表示浮点数的阶码(正数的移码符号位为1,负数的为0)
定点数:约定计算机中所有数据的小数点位置固定
浮点数:小数点位置不固定,可以浮动
溢出:在变形补码那里,符号位为01表示正溢出,10表示负溢出
强制类型转换:unsigned修饰的short、int数表示为无符号数
长度相同的整数无符号数和有符号数之间的转换:eg:short转换为unsigned short:补码长度不变,只是补码的最高位用来表示符号的现在是数据位。如果无符号数的最高位为1,则将无符号数取补码,得到的数就是有符号数。
长整数强转成短整数:eg:int转换为short:高位截断,保留低位,
短整数变长整数:eg:short转换为int:符号位扩展
无符号数短整数变无符号数长整数:最高位添0
规格化:将非规格化的数处理成规格化数的过程。规格化数规定尾数用纯小数表示,且真值表示时小数点后第一位不为0(以机器数表示时对小数点后第一位的规定与具体的机器数的形式有关)。
当阶码E全为0,尾数M不全为0时,表示非规格化小数±(0.XX…X)2×2^-126
当阶码E全为0,尾数M全为0时,表示真值±0
左规:当浮点数运算的结果为非规格化时要进行规格化处理,将尾数算数左移一位(小数点向右移动一位),阶码减一
右规:当浮点数运算的结果尾数出现溢出(双符号位为01或者10)时,将尾数算数右移一位(小数点向左移动一位,总长度不变),阶码加一
规格化浮点数的特点:
用原码表示的尾数进行规格化:正数为0.1X…X的形式,负数为1.1X…X的形式
用补码表示的尾数进行规格化:正数为0.1X…X的形式,负数为1.0X…X的形式
浮点数的加减运算:
表示十进制整数的方法:BCD码、BIC码、DPD码
BCD码(8421码):用4位二进制数来表示1位十进制数中的0~9这10个数码,即二进制表示的十进制数。是有权编码。
二进制浮点数:不能精确表示十进制数,给运算带来很大误差
ACSII码:用于表示字符大写字母之间ACSII码连续小写字母之间ASCII码连续,但是大小写字母之间不连续
汉字机内码:计算机内部存储、处理加工和传输汉字时所用的由0和1符号组成的代码。
字形码(字型码):汉字的输出码
汉字库:汉字字形码按区位码的顺序排列,以二进制文件形式存放在存储器中,构成汉字字模字库。
码距(海明距离):一组编码中对应位上数字位不同的最小个数。码距=2,有检错能力,码距≥3,可能还会有纠错能力
奇偶校验:通过检测校验码中1的个数的奇/偶性是否改变来判断数据是否出错的一种数据校验方法,码距为2,不能纠错。当出错位数为偶数个时无法检验出错误
奇校验码:有效信息位和校验位中1的个数为奇数个
偶校验码:有效信息位和校验位中1的个数为偶数个
海明校验(ECC):是一种基于多重奇校验且具有检测与纠正错误的校验方法。其基本原理是将有效信息按某种规律分成若干组,每组安排一个校验位进行奇偶测试,就能提供多位检错信息,以指出最大可能是哪位出错,从而将其纠正。
校验位k和信息位n之间的关系:2^k≥n+k+1
校验位Pi应该放在2^(i-1)的位置上
循环冗余校验(CRC):是数据通信领域中最常用的一种具有检测与纠正错误能力差错校验码,基利用生成多项式并基于模2运算建立编码规则。
2.2
(1)由3个“1”和5个“0”组成的8位二进制补码,能表示的最小整数是()。
A.-126 B.-125 C.-32 D.-3
(2)考虑以下 C 语言代码:
unsigned short usi=65535;
short si=usi;
执行上述程序段后,si 的值是( )。
A.-1 B.-32767 C.-32768 D.-65535
(3)假定编译器规定int和short类型长度分别为32位和16位,执行下列C语言语句: unsigned short x=65530; unsigned int y=x; 得到y的机器数为
A.0000 7FFAH
B.0000 FFFAH
C.FFFF 7FFAH
D.FFFF FFFAH
(4)有如下C语言程序段:
short si=-32767;
unsigned short usi=si;
执行上述两条语句后,usi的值为()
A.-32767
B.32767
C.32768
D.32769
(5)float型数据通常用IEEE 754单精度浮点数格式表示。若编译器将float型变量x分配在一个32位浮点寄存器FRl中,且x=-8.25,则FR1的内容是()。
A.C104 0000H
B.C242 0000H
C.C184 0000H
D.C1C2 0000H
(6)某数采用IEEE754单精度浮点数格式表示为C640 0000H,则该数的值是_______。
A.-1.5×2^13
B.-1.5×2^12
C.-0.5×2^13
D.-0.5×2^12
(7)float类型(即IEEE754单精度浮点数格式)能表示的最大正整数是_______。
A.2 126 -2^103
B.2 127 -2^104
C.2 127 -2^103
D.2 128 -2^104
(8)IEEE 754单精度浮点格式表示的数中,最小的规格化正数是()
A.1.0×2-126
B.1.0×2-127
C.1.0×2-128
D.1.0×2-149
(9)float型数据通常用IEEE754单精度浮点格式表示,假定两个float型变量x和y分别存放在32位寄存器f1和f2中,若(f1)=CC900000H,(f2)=B0C00000H,则x和y之间的关系为()。
A.x<y且符号相同
B.x<y且符号不同
C.x>y且符号相同
D.x>y且符号不同
(10)假定变量i,f,d数据类型分别为int,float和double(int用补码表示,float和double分别用IEEE754单精度和双精度浮点数据格式表示),已知i=785,f=1.5678,d=1.5。若在32位机器中执行下列关系表达式,则结果为真是()。
(Ⅰ)i==(int)(float)i
(Ⅱ)f==(float)(int)f
(Ⅲ)f==(float)(double)f
(Ⅳ)(d+f)-d==f
A.仅Ⅰ和Ⅱ
B.仅Ⅰ和Ⅲ
C.仅Ⅱ和Ⅲ
D.仅Ⅲ和Ⅳ
(11)用海明码对长度为8位的数据进行检/纠错时,若能纠正一位错,则校验位数至少为
A.2
B.3
C.4
D.5
2.3
(1)为什么计算机中采用二进制进行数据表示和运算?1、技术实现简单:计算机是由逻辑电路组成,逻辑电路通常只有两个状态,开关的接通与断开,这两种状态正好可以用“1”和“0”表示。2、抗干扰能力强,可靠性高3、运算规则简单4、适合逻辑运算5、易于与其他进制进行转换
(2)相较于奇偶校验,交叉奇偶校验的检错和纠错能力的提高需要付出哪些方面的代价?交叉奇偶校验原理:将带编码的原始数据信息构造成行列矩阵式结构,同时进行行和列两个方向的奇偶校验。缺点:复杂,占用的内存变大
(3)为什么计算机中采用补码表示带符号的整数?使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。
(4)浮点数的表示范围和精度分别由什么决定?表示范围由阶码E的位数决定,精度由尾数的位数决定。
(5)汉字输入码、机内码和字形码在汉字处理过程中各有何作用?
1、输入码:将汉字输入到计算机中。常用的输入码有拼音码、五笔字型码、自然码、表形码、认知码、区位码和电报码等
2、机内码:输入的汉字外码到机器内部都要转换成机内码,才能被存储和进行各种处理。
3、字形码:字形码是汉字的输出码,输出汉字时都采用图形方式,无论汉字的笔画多少,每个汉字都可以写在同样大小的方块中。通常用16×16点阵来显示汉字。
(6)在汉字机内码中如何区分ASCII码和汉字字符?ASCII码的首位为0,而汉字编码的首位为1。
(7)为什么现代处理器中又开始支持十进制浮点运算?十进制浮点数可以解决二级制浮点数最大的问题——不能精确表示十进制数。
(8)如何识别浮点数的正负?浮点数能表示的数值范围和数值的精度取决于什么?尾数的符号位也就是浮点数的符号位S,为1时表示为负数,为0时表示为正数。
(9)浮点数有两个0会带来什么问题?
(10)简述CRC校验码的检错原理,CRC能纠错吗?1、原理:先在要发送的帧后面附加一个数(即用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这里不是直接采用二进制除法,而是采用一种称之为“模2除法”)。到达接收端后,再把接收到的新帧除以(同样采用“模2除法”)这个选定的除数。因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。如果有余数,则表明该帧在传输过程中出现了差错。2、CRC能纠错。
2.5 已知数的补码表示形式,求数的真值。
[x]补=0.10010, [x]补=1.10010, [x]补=1.11111, [x]补=1.00000, [x]补=0.10001, [x]补=1.00001,
[x]补=0.10010,则[x]原=0.10010,x=0.10010; [x]补=1.10010,则[x]原=1.01101,x=-0.01101;
[x]补=1.11111,则[x]原=1.00000,x=-0; [x]补=1.00000,则[x]原=1.11111,x=-0.11111;
[x]补=0.10001,则[x]原=0.10001,x=0.10001; [x]补=1.00001,则[x]原=1.11110,x=-0.11110。
2.8 用补码表示8位二进制整数,最高位用一位表示符号(即形如x0x1x2x3x4x5x6x7)时,模应为多少?
因为8位二进制数补码的表示范围为:-128~127一共有256个数,所以模为256。
2.12 设有两个正浮点数:N1=2m×M1,N2=2n×M2。 (1)若m>n,是否有N1>N2? (2)若M1和M2是规格化的数,上述结论是否正确?
(1)不一定。 例如,N1=23×0.001,N2=22×0.01 (2)正确。 因为浮点数规格化,要求尾数的最高位为非0数码,即当尾数的值不为零时,其绝对值应大于或等于(1/2)10。 那么M1和M2都必须是0.1× × „ ×的形式。这时,若m>n,则一定有N1>N2。
2.14 将下列十进制数表示成浮点规格化数,阶码4位,尾数10位,各含1位符号,阶码和尾数均用补码表示。 (1)57/128 (2) —69/128
2.17 设8位有效信息为01101ll0,试写出它的海明校验码。给出过程,说明分组检测方式,并给出指误字及其逻辑表达式。如果接收方收到的有效信息变成01101111,说明如何定位错误并纠正错误。
2.18 设要采用CRC编码传送的数据信息x=1001,当生成多项式为G(x)=1101时,请写出它的循环校验码。若接收方收到的数据信息x’=1101,说明如何定位错误并纠正错误。