微软笔试题集锦
1.下面哪一项是二进制数01011001乘以0111001后再加上1101110的结果:
A、0001010000111111
B、0101011101110011
C、0011010000110101
[解析]不需要硬算,前面乘出来最后三位是001,这样加起来最后三位就是111
2.A,B,C,D都为32位整型,基于以下给定的C,D能否确定A,B的值
A、C=A+B,D=A-B
B、C=A+2*B,D=A+B
C、C=A+B,D=B
D、C=A-B,D=(A+B)>>1
E、C=A*B,D=A/B
[解析]该题主要是考虑越界问题
A.假设A>0,B>0;C可能越界,使得C=A+B-2^32
例如:A=B=2^31-1,C=-2,D=0;
A=B=-1,C=-2,D=0
D.类似于A
C.不管C是否越界,总能得到A=C-D, B=D
B.设Q=A+B,则 C=Q+B ,D=Q。类比C即可求出Q与B,在此基础上再次类比C即可求出A
E.反例:A=B=2^14,C=2^28,D=1
A=B=2^30,C=2^28,D=1
3. 32位有符号整数X、F、G,F = X / 2 , G = (X>>1)。如果 F!=G, 则说明(BCD)
A. 编译器错误
B. X是奇数
C. X是负数
D. F - G = 1
E. G - F = 1
[解析]
对于32位有符号整数x,如果x/2不等于x>>1,说明x为负数,且为奇数。例如-5 / 2 = -2,-5 >> 1 = -3 。-6 / 2 = -3,-6 >> 1 = -3