1.【2015考研真题】由3个“1”和5个“0”组成的8位二进制补码,能表示的最小整数是()。
A.-126
B.-125
C.-32
D.-3
【答案】B
【解题过程】
(1)因为是最小整数,所以补码为1,0000011
(2)1,0000011转换为真值,从右往左找到第一个1,这个“1”左边的所有”数值位“按位取反,结果为1,1111101=-125
2.【2019考研真题】考虑一下C语言代码:
unsigned short usi = 65535;
short si=usi;
执行上述程序段后,si的值是()。
A.-1
B.-32767
C.32768
D.-65535
【答案】A
【解题过程】
(1)根据题目要求,我们要将无符号整数转换为有符号整数
无符号整数转换为有符号整数:符号位不变,减1,取反。
(2)65535= 1,111111111111111
减1: 1,111111111111111-1=1,111111111111110
取反: 1,111111111111110为1,000000000000001
1,000000000000001即-1
3.【2012考研真题】假定编译器规定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
【答案】B
【解题过程】
(1)根据题目要求,我们这里是同为无符号数的转化
无符号数的转化:高位全补0
(2)65530转化为二进制:1111111111111010
1111111111111010二进制(B)转为为十六进制(H)采用8421法,结果为:FFFA(H)
无符号数的转化:高位全补0,所以在FFFA(H)前面补0,答案为0000 FFFAH
4.【2016考研真题】有如下C语言程序段:short si = -32767;unsigned short usi=si;执行上述两条语句后,usi的值为()。
A.-32767
B.32767
C.32768
D.32769
【答案】D
【解题过程】
(1)根据题目要求,我们要将有符号数转换为无符号数
前面,我们说无符号数转换为有符号数:符号位不变,减1,取反。
同理,有符号数转换为无符号数:符号位变数值,取反,加1
(2)-32767
符号位变数值:1,111 1111 1111 1111
取反:1,000000000000000
加1:1,000 0000 0000 0001
1,000 0000 0000 0001即32769
5.【2011考研真题】float 型数据通常用IEEE754单精度浮点数格式表示。若编译器将float 型变量x 分配在一个32位浮点寄存器FR1中,且x=-8.25, 则FR1的内容是( )。
A.C1040000H
B.C2420000H
C.C1840000H
D.C1C20000H
【答案】A
【解题过程】
(1)首先分别将十进制数-8.25的整数部分和小数部分转换为二进制数
-8.25即二进制-1000.01
(2)移动小数点,使尾数变成1.M的形式
-1000.01=-1.00001*2^3
(3)由-1.00001*2^3可得:
S(数符)=1
E(计算阶码的移码)=偏置值+阶码真值=127+3 = 130,即二进制 10000010,
M(尾数)为00001000000000000000000,
所以十进制-8.25的IEEE754单精度浮点数的十六进制机器码为
1100 0001 0000 0100 0000 0000 0000 0000
即C1040000H 。
6.【2013考研真题】某数采用IEEE754单精度浮点数格式表示为C640 0000H,则该数的值是()。
A.-1.5*2^13
B.-1.5*2^12
C.-0.5*2^13
D.-0.5*2^12
【答案】A
【解题过程】
(1)将十六进制转化为二进制
C6400000H=1100 0110 0100 0000 0000 0000 0000 0000
(2)由此可得:
s=1,表示负数
E=10001100,E(计算阶码的移码)=偏置值+阶码真值,所有140=127+阶码真值,阶码真值为13
M=100 0000 0000 0000 0000 0000
实际尾数:1.M=1.1(后面的0不用管它)
可得:(-1)*1.M*2^13=-1.1*2^13,有的人会疑惑,答案没有-1.1*2^13
那是因为答案将二进制1.1转化为了十进制1.5
小数点前面的按照8421法,还是1;
小数点后面的按照每个二进制位乘以2的相应幂次方,对于小数点后面部分,从左往右依次是2的-1次方、2的-2次方、2的-3次方等。
举个例子:将二进制0.001转化为十进制
第一位为0,则0*1/2,即0乘以2负 一次方;第二位为0,则0*1/4,即0乘以2的负二次方;第三位为1,则1*1/8,即1乘以2的负三次方。
各个位上乘完之后,相加,0*1/2+0*1/4+1*1/8得十进制的0.125
我们这里小数点后面部分0.1即1*1/2,即1乘以2负 一次方,等于0.5
所以答案是-1.5*2^13
7..【2018考研真题】用海明码对长度为8位的数据进行检错和纠错时,若能纠正一位错,则校验位数至少为()。
A.2
B.3
C.4
D.5
【答案】C
【解题过程】
只需记住:
2~4位,用3位校验码;5~11位,用4位校验码。