1.由3个“1”和5个“0”组成的8位二进制补码,能表示的最小整数是()
【答案】
整数为负数,且绝对值最大的时候表示的整数最小
而因为负数数字是由原码的数字位直接体现的,因此补码需要取反
所以补码除了符号位,其他的地方要最小地表示
因此表示最小整数的补码为1000 0011
反码为1000 0010
原码为1111 1101,即-125
2.已知机器字长64位,定点整数,若采用原码表示,其最大值是()
【答案】
第一位是符号位,故数字为字长为63位,所以:
长64位的机器字能表示带符号的整数范围为[-2^63,2^63-1]
3.已知定点小数,补码表示,其编码为:1.000 0000,则其真值为()
定点小数是纯小数,因此最高位为符号位,因此该数为负数
【答案】
由以上图可设该数为x,则有2 + x = 1.000 0000
得出该数为 -1
4.有如下C语言程序段:
short si=-32767 ;
unsigned short usi=si;
执行上述两条语句后,usi的值为()
【答案】
结合题干及选项可知,short为16位,其中1位为符号位剩下15位为数值位。因C语言中的数据在内存中为补码表示形式,si对应的补码二进制表示为: 1000,0000,0000,0001B。
最高位为符号位 = “1”,表示负数,后面15位为数值位。即 - 32767。signed型数据转化为unsigned型数据时,符号位变为数据的一部分,即负数表示符号的位变为真值数值位,其数值位共16位,其编码为:
1000,0000,0000,0001B
对应的真值为32769
5.IEEE754单精度浮点数格式表示的数中,最小规格化正数是()
【答案】
IEEE 754单精度浮点数的数符、阶码、尾数所占的位数分别是1、8、23。
真值转换公式:
最小正数:
数符位:0,
阶码E的取值范围是1- 254,取1,得e=1 -127 = - 126,
尾数全为0,最终最小规格化正数为:1.0 × 2 ^ (-126)
6.已知机器字长32位,对于定点整数中的机器零,请分别给出原码,反码,补码,移码的编码表示(要求用十六进制表示)。
原码:+0,[填空1]H
-0,[填空2]H
补码:+0,[填空3]H
反码:+0:与原码一样
-0:[填空4]H
移码: 0,[填空5]H
【答案】
①0000 0000 ②8000 0000 ③0000 0000 ④FFFF FFFF ⑤8000 0000
7.设机器字长为16位,定点整数N的编码为FFFEH,试计算其分别表示原码、反码、补码及移码时,对应的十进制真值各是多少?
(1)原码,对应的十进制真值为:[填空1];
(2) 补码,对应的十进制真值为:[填空2];
(3)反码,对应的十进制真值为:[填空3];
(4)移码,对应的十进制真值为:[填空4]。
【答案】
最高位为符号位,因此算真值的时候应该去掉符号位,再在最后的时候再加上①-[111 1111 1111 1110]2 = -32766
②补码转为原码后,为-[000 0000 0000 0010]2 = -2
③反码转为原码后,为-[000 0000 0000 0001]2 = -1
④移码转为原码后,为+[111 1111 1111 1110]2 = +32766
注意,移码转原码可以先转为补码再转为原码。然而转补码时,符号位取反,符号为+,此时的补码等于原码,因此为+[111 1111 1111 1110]2 = + 32766
8.设机器字长为16位,定点整数,试按要求给出对应的机器编码,要求用十六进制表示。
(1)补码:
最大值的补码:[填空1]H
最小值的补码:[填空2]H
(2)移码:
最大值的移码:[填空3]H
0的移码:[填空4]H
最小值的移码:[填空5]H
最高位为符号位
【答案】
①为最大值,因此符号位为0,故原码为0111 1111 1111 1111,其补码与原码一致,为7FFF H
②
为最小值,因此符号位为1,故原码为1111 1111 1111 1111,补码为1000 0000 0000 0001,即8001H以上划线部分是错误的,最小值的补码由规定就是1000 0000 0000 0000,即1000H
另有例子:
推导: -128 =(-1)+(-127) = 原码 1000 0001+原码 1111 1111 =
补码 1111 1111 + 补码 1000 0001 = 补码 1000 0000。
也正是因此,8位带符号二进制的范围为-128~+127,因为1000 0000 表示的是128
③由最大值的补码,得出移码为1111 1111 1111 1111,即FFFFH
④0的补码为0,因此0的移码为1000 0000 0000 0000,即8000H
⑤由最小值的补码,得出移码为0000 0000 0000 0000,即0000H
9.设机器字长为8位,定点小数,试给出数N=-69/128对应的机器码编码,要求用二进制表示,其中符号位1位,数值位7位。
(1) N的二进制真值:
[填空1]
(2) N的原码表示:
[填空2]
(3) N的反码表示:
[填空3]
(4) N的补码表示:
[填空4]
【答案】
N=-69/128=-69/2^7
可以先求出分子69的二进制,再把小数点从右向左移动7位,再加上符号“-”
即N的二进制真值为:
N=-0.100,0101
原码表示:1.100,0101
反码表示:1.011,1010
补码表示:1.011,1011
10.设机器字长为16位,定点整数,数N=-1025,求其二进制真值以及对应的机器码编码,机器码要求用十六进制表示。
(1)N的二进制真值: [填空1]H
(2)N的原码表示: [填空2]H
(3)N的反码表示: [填空3]H
(4)N的补码表示: [填空4]H
(5)N的移码表示: [填空5]H
【答案】
① - 100 0000 0001
② 1000 0100 0000 0001,即8401H
③ 1111 1011 1111 1110,即FBFEH
④ 1111 1011 1111 1111,即FBFFH
⑤ 0111 1011 1111 1111,即7BFFH
11.已知浮点数N的32位IEEE754标准存储格式为43940000H,求数N的十进制真值。
由题意,S,E,M为(二进制)︰
S=[填空1];
E=[填空2]
M=[填空3](末尾的0可略去)。因此,e=[填空4](十进制)代入公式,可求出N的十进制真值为:[填空5]
【答案】
由题N二进制表示为 0100 0011 1001 0100 0000 0000 0000 0000
由IEEE754标准,从左到右依次为SEM,S占1位,E占8位,其余位均为M
则N为 0 1000 0111 0010 1000 0000 0000 0000 000
因此 S = 0
E = 1000 0111
M = 001 0100 0000 0000 0000 0000
e = E - 127,E 的十进制表示为135,因此(e)10 = 8
则:x = (-1)^s * 1.M * 2^e
=1. 00101 * 2^8
= (296)10
12.已知浮点数N的十进制真值为 - ,试将其转换成32位IEEE754浮点数的存储格式(最终结果要求用十六进制表示)先将N转换成±1.M的形式,即: [填空1]×2^2
由此得,S=[填空2];E=[填空3](二进制)
M=[填空4],0000,0000,0000,0000
因此,N的存储格式为(用十六进制表示)︰[填空5]H
【答案】
① -
即 - 53/8 = -(110101)2 / 2^3
= -(110.101)2 = - (1.10101)2 * 2^2
② S = 1
③ e = E - 127,因此E = 129 = 1000 0001
④ M = 1 0101
⑤ 综上,N 为 1100 0000 1101 0100 0000 0000 0000 0000,即C0D40000H
13.已知补码的形式,求对应真值(用二进制表示)
(1)若[X]补=0.10010,则:
x=[填空1] B;
(2)若[X]补=1.10010,则:
x=[填空2] B;
(3)若[X]补=1.11111,则:
x=[填空3] B;
(4)若[X]补=1.00000,则:
x=[填空4]B。
(5)若[X]补=1.00001,则:
x=[填空5]B。
【答案】
① 0.01110
② - 0.01110
③ - 0.00001
④ - 1.00000
⑤ - 0.11111
注意:二进制真值直接写符号在数字前面,无符号位