微软笔试题集锦

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

 

  

  

原文地址:https://www.cnblogs.com/laifeiyao/p/3041106.html