选择题(每题2分,共30分)
第 1 题 整数-5的16位补码表示是(D)。
A. 1005 B. 1006 C. FFFA D. FFFB
解析:0是FFFF,用0-5(即FFFF-5)得到是FFFB。
第 2 题 如果16位短整数-2的二进制是“FFFE”,则短整数-4的值是(C)。
A. FF04 B. FFFA C. FFFC D. FFFH
解析:FFFF-FFFE=1(2-1),那么FFFF-(4-1)=FFFC
第 3 题 下面C++代码执行后的输出是(C)。
int main()
{
cout << (3|16) << endl;
cout << endl;
return 0;
}
A. 3 B. 16 C. 19 D. 48
解析:3的二进制是11;
16的二进制是1000;
或以下就是 1011。
,所以选C。
第 4 题 定义整数 int x=-5 ,则执行C++代码 cout<< (x==(x<<1>>1); 输出是(B)。
A. 0 B. 1 C. -5 D. 5
解析:-5=1101,左移后变为1010,右移后变为1101(算术移位),1101=1101,所以选B。
第 5 题 已知字符'0'的ASCII编码的十进制表示为48,则执行下面C++代码后,输出是(C)。
int main()
{
string s="316";
int n=s.length();
int x=0;
for(int i = 0; i < n; i++)
x += s[i];
cout << x << endl;
cout << endl;
return 0;
}
A. 10 B. 58 C. 154 D. 316
解析:三位,先用48×3=144,再用144+3+6+1=154,选C。
第 6 题 下⾯C++代码执行后数组中大于0的数的特征是(C)。
int main()
{
int a[20],i;
for(i = 0; i < 20; i++)
a[i] = i+1;
for(int i = 0; i < 20; i++)
if((a[i]%2)&&(a[i]%3))
a[i] = 0;
for(i = 0; i < 20; i++)
if(a[i])
cout << a[i] << " ";
cout << endl;
return 0;
}
A. 2的倍数 B. 3的倍数 C. 能被2或3整除的数 D. 能被2和3同时整除的数
解析:运行后得知(我也不知道为什么,求科普)
第 7 题 执行下面C++代码后输出的第一个数是(A)