用8位二进制数的补码表示带符号的整数,所能表示的范围是()。A.-128~+128B.-127~+127C.-127~+12
用8位二进制数的补码表示带符号的整数,所能表示的范围是()。
A.-128~+128
B.-127~+127
C.-127~+128
D.-128~+127
用8位二进制数的补码表示带符号的整数,所能表示的范围是()。
A.-128~+128
B.-127~+127
C.-127~+128
D.-128~+127
某计算机字长为8位,它用补码、原码或反码来表示带符号的二进制整数(最高一位为符号位),则机器代码11111111所表示的十进制真值分别为(4)、(5)或(6)。
A.128
B.0
C.1
D.-1
A.由32位二进制数组成
B.每8位为一组,用小数点“.”分隔
C.每4位为一组,用小数点“.”分隔
D.每组用相应的十进制数(0-255之间的正整数)表示
若定点整数64位,含1位符号位,用补码表示,则所能表示的绝对值的最大负数为()。
A. 一264
B. 一(264-1)
C. 一263
D. 一(263-1)
A.②和④
B.①和②
C.①和④
D.③和④
下列说法中正确的是()。
A.只有定点数运算才有可能溢出,浮点数运算不会产生溢出。
B.只有带符号数的运算才有可能产生溢出。
C.将两个正数相加时有可能产生溢出。
D.采用变形补码进行加减法运算可以避免溢出。
试题二(共 15分)
阅读以下说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明 1】
函数Counter(int n, int w[])的功能是计算整数n的二进制表示形式中1的个数,同时用数组w记录该二进制数中1所在位置的权。
例如,十进制数22的二进制表示为10110。对于该二进制数,1的个数为3,在w[0]中存入2(即 )、w[1]中存入4(即 )、w[2]中存入16(即 )。
1
2 2
2 4
2
【C函数 1】
int Counter(int n, int w[])
{ int i = 0, k = 1;
while ((1) ) {
if (n % 2) w[i++] = k;
n = n / 2; (2) ;
}
return i;
}
【说明 2】
函数 Smove(int A[], int n)的功能是将数组中所有的奇数都放到所有偶数之前。其过程为:设置数组元素下标索引i(初值为0)和j(初值为n-1),从数组的两端开始检查元素的奇偶性。若 A[i]、A[j]都是奇数,则从前往后找出一个偶数,再与 A[j]进行交换;若 A[i]、A[j]都是偶数,则从后往前找出一个奇数,再与A[i]进行交换;若 A[i]是偶数而A[j]是奇数,则交换两者,直到将所有的奇数都排在所有偶数之前为止。
【C函数 2】
void Smove(int A[], int n)
{ int temp, i = 0, j = n-1;
if (n < 2 ) return;
while (i < j ) {
if (A[i] % 2 == 1 && A[j] % 2 == 1 ) { (3) ; }
else if (A[i] % 2 == 0 && A[j] % 2 == 0 ) { (4) ; }
else {
if ((5) ) {
temp = A[i]; A[i] = A[j]; A[j] = temp;
}
i++, j--;
}
}
}
A.两个整数相加,若最高位(符号位)有进位,则一定发生溢出
B.两个整数相加,若结果的符号位为0,则一定发生溢出
C.两个整数相加,若结果的符号位为1,则一定发生溢出
D.两个同号的整数相加,若结果的符号位与加数的符号位相反,则一定发生溢出
对8位补码操作数A5H进行2次算术右移的结果为______(不必转换成十进制数)。
A.D2H
B.52H
C.E9H
D.69H
若二进制数原码为 -0.0101,则其补码为
A.-0.0101
B.0.0101
C.1.1011
D.1.1010