10.设某浮点数格式为:
其中,移码的偏置常数为16,补码采用一位符号位,基数为4。
(1)用这种格式表示下列十进制数:
+,+19,–1/8。
(2)写出该格式浮点数的表示范围,并与12位定点补码整数表示范围比较。
参考答案:
(假定采用0舍1入法进行舍入)
(1)+=+=×41,故阶码为1+16=17=10001B,尾数为+的补码,
=×40=0。
130Q×41=×40
即,所以+表示为010001011100。
+19=+10011B=×43,故阶码为3+16=19=10011B,尾数为,所以+19表示为010011010011。
–1/8=–=–=–×4–1,
阶码为–1+16=15=01111B,尾数为–的补码,即,所以–1/8表示为101111100000。
(2)该格式浮点数表示的范围如下。
正数最大值:
×411111,即:
×415(≈230≈109)
正数最小值:
×400000,即:
×4–16(≈2–34≈10–10)
负数最大值:
–×400000,即:
–×4–16
负数最小值:
–×411111,即:
–×415
因此,该格式浮点数的数量级在10–10~109之间。
12位定点补码整数的表示范围为:
–211~+(211–1),即:
–2048~2047
由此可见,定点数和浮点数的表示范围相差非常大。
11.下列几种情况所能表示的数的范围是什么
(1)16位无符号整数
(2)16位原码定点小数
(3)16位补码定点小数
(4)16位补码定点整数
(5)下述格式的浮点数(基数为2,移码的偏置常数为128)
参考答案:
(1)无符号整数:
0~216–1。
(2)原码定点小数:
–(1–2–15)~+(1–2–15)。
(3)补码定点小数:
–1~+(1–2–15)。
(4)补码定点整数:
–32768~+32767。
(5)浮点数:
负数:
–(1–2–7)×2+127~–2–7×2–128。
正数:
+2–135~(1–2–7)×2+127。
12.以IEEE754单精度浮点数格式表示下列十进制数。
+,+19,–1/8,258
参考答案:
+=+=×20,故阶码为0+127=01111111B,数符为0,尾数为…0,小数点前为隐藏位,所以+表示为00111111111000000000000000000000,用十六进制表示为3FE00000H。
+19=+10011B=+×24,故阶码为4+127=B,数符为0,尾数为…0,所以+19表示为000110000000000000000000,用十六进制表示为H。
–1/8=–=–=–×2–3,阶码为–3+127=01111100B,数符为1,尾数为…0,所以–1/8表示为10111110000000000000000000000000,用十六进制表示为BE000000H。
258=0B=×28,故阶码为8+127=B,数符为0,尾数为,所以258表示为000000010000000000000000,用十六进制表示为H。
13.设一个变量的值为6144,要求分别用32位补码整数和IEEE754单精度浮点格式表示该变量(结果用十六进制表示),并说明哪段二进制序列在两种表示中完全相同,为什么会相同
参考答案:
6144=+1100000000000B=+1.1×212
32位补码形式为:
00000000000000000001100000000000(00001800H)
IEEE754单精度格式为:
010000000000000000000000(45C00000H)
蓝字部分为除隐藏位外的有效数字,因此,在两种表示中是相同的序列。
因为正数的补码和原码是一致的,所以除隐藏位外的有效数字都相同。
14.设一个变量的值为–6144,要求分别用32位补码整数和IEEE754单精度浮点格式表示该变量(结果用十六进制表示),并说明哪种表示其值完全精确,哪种表示的是近似值。
参考答案:
–6144=–1100000000000B=–1.1×212
32位补码形式为:
11111111111111111110100000000000(FFFFE800H)
IEEE754单精度格式为:
110000000000000000000000(C5C00000H)
32位补码形式能表示精确的值,浮点数表示的也是精确值,因为没有有效数字被截断。
15.下表给出了有关IEEE754浮点格式表示中一些重要数据的取值,表中已经有最大规格化数的相应内容,要求填入其他浮点数的相应内容。
(注:
表中a代表一个在1到10之间的正纯小数)
项目
阶码
尾数
单精度
双精度
以2的幂次表示的值
以10的幂次表示的值
以2的幂次表示的值
以10的幂次表示的值
0
1
最大规格化数
最小规格化数
最大非规化数
最小非规化数
+∞
NaN
00000000
01111111
00000001
00000000
00000000
0….00
0….00
1…11
0….00
1…11
0…01
0….00
非全0
0
1
(2–2–23)×2127
×2–126
(1–2–23)×2–126
2–23×2–126=2–149
–
–
0
1
a×1038
a×10–38
a×10–38
a×10–44
–
–
0
1
(2–2–52)×21023
×2–1022
(1–2–52)×2–1022
2–52×2–1022
–
–
0
1
a×10308
a×10–308
a×10–308
a×10–
–
–
16.已知下列字符编码:
A=1000001,a=1100001,0=0110000,求E、e、f、7、G、Z、5的7位ACSII码和第一位前加入奇校验位后的8位编码。
参考答案:
E的ASCII码为‘A’+(‘E’–‘A’)=1000001+100=1000101,奇校验位P=0,第一位前加入奇校验位后的8位编码是01000101。
e的ASCII码为‘a’+(‘e’–‘a’)=1100001+100=1100101,奇校验位P=1,第一位前加入奇校验位后的8位编码是11100101。
f的ASCII码为‘a’+(‘f’–‘a’)=1100001+101=1100110,奇校验位P=1,第一位前加入奇校验位后的8位编码是11100110。
7的ASCII码为‘0’+(7-0)=0110000+111=0110111,奇校验位P=0,第一位前加入奇校验位后的8位编码是00110111。
G的ASCII码为‘A’+(‘G’–‘A’)=1000001+0110=1000111,奇校验位P=1,第一位前加入奇校验位后的8位编码是11000111。
Z的ASCII码为‘A’+(‘Z’–‘A’)=1000001+11001=1011010,奇校验位P=1,第一位前加入奇校验位后的8位编码是11011010。
5的ASCII码为‘0’+(5–0)=0110000+101=0110101,奇校验位P=1,第一位前加入奇校验位后的8位编码是10110101。
17.假定在一个程序中定义了变量x、y和i,其中,x和y是float型变量(用IEEE754单精度浮点数表示),i是16位short型变量(用补码表示)。
程序执行到某一时刻,x=–、y=12、i=–125,它们都被写到了主存(按字节编址),其地址分别是100,108和112。
请分别画出在大端机器和小端机器上变量x、y和i在内存的存放位置。
参考答案:
–=–=–×23
x在机器内部的机器数为:
10100010…0(C1220000H)
12=+1100B=+×23
y在机器内部的机器数为:
0100…0(41400000H)
–125=–1111101B
i在机器内部的机器数为:
1111111110000011(FF83H)
大端机小端机
地址内容内容
100C1H00H
10122H00H
10200H22H
10300HC1H
10841H00H
10940H00H
11000H40H
11100H41H
112FFH83H
11383HFFH
18.假定某计算机的总线采用偶校验,每8位数据有一位校验位,若在32位数据线上传输的信息是8F3CAB96H,则对应的4个校验位应为什么若接受方收到的数据信息和校验位分别为873CAB96H和1010B,则说明发生了什么情况,并给出验证过程。
参考答案:
传输信息8F3CAB96H展开为10001111001111001010101110010110,每8位有一个偶校验位,因此,总线上发送方送出的4个校验位应该分别为1、0、1、0。
接受方的数据信息为873CAB96H,展开后为10000111001111001010101110010110,接收到的校验位分别为1、0、1、0。
在接受方进行校验判断如下:
根据接收到的数据信息计算出4个偶校验位分别为0、0、1、0,将该4位校验位分别和接收到的4位校验位进行异或,得到1、0、0、0,说明数据信息的第一个字节发生传输错误。
对照传输前、后的数据信息,第一字节8FH变成了87H,说明确实发生了传输错误,验证正确。
19.假定一个16位数据M16M15M14M13M12M11M10M9M8M7M6M5M4M3M2M1,写出16位数据的SEC码。
假定数据为0010100011001010,说明SEC码如何正确检测数据位5的错误。
参考答案:
对于16位数据,可以如下插入校验位:
M16M15M14M13M12P5M11M10M9M8M7M6M5P4M4M3M2P3M1P2P1
其中Mi是原信息数据,Pi是加入的校验位,对于各个校验位的值可以如下计算
P1=M1⊕M2⊕M4⊕M5⊕M7⊕M9⊕M11⊕M12⊕M14⊕M16=1
P2=M1⊕M3⊕M4⊕M6⊕M7⊕M10⊕M11⊕M13⊕M14=1
P3=M2⊕M3⊕M4⊕M8⊕M9⊕M10⊕M11⊕M15⊕M16=1
P4=M5⊕M6⊕M7⊕M8⊕M9⊕M10⊕M11=0
P5=M12⊕M13⊕M14⊕M15⊕M16=0
所以此时P5P4P3P2P1=00111,第五位数据出错时,数据字变为:
0010100011011010,P5’P4’P3’P2’P1’=01110,故障字=00111⊕01110=01001,说明码字第9位出错,即M5出错。
20.假设要传送的数据信息为:
110010,若约定的生成多项式为:
G(x)=x3+1,则校验码为多少假定在接收端接收到的数据信息为110011,说明如何正确检测其错误,写出检测过程。
参考答案:
原数据信息为110010,对应的报文多项式为M(x)=x5+x4+x,生成多项式的位数为4位,所以在原数据信息后面添加3个0,变为M’(x)=x3M(x)=x8+x7+x4,用M’(x)去模2除G(x),得到的余数为100,所以得到CRC码为110010100。
检测时,用接收到的CRC码去模2除生成多项式1001,若得到的余数为0,则表明正确,否则说明传输时发生了错误。
此题中接收到的CRC码为110011100(即数据110011加检验位100),显然,用110011100模2除1001,得到余数为001,不为0,说明传输时发生错误。
在网络通信中,一般不纠错,只要求重发。