一些C语言的题,拜求答案5
二、填空题1、以下函数的功能是计算所用计算机中int型数据的字长(即二进制位)的位数。(注:不同类型机器上int型数据所分配的长度是不同的,该函数上有可移植性)。请在处填...
二、填空题
1、以下函数的功能是计算所用计算机中int型数据的字长(即二进制位)的位数。(注:不同类型机器上int型数据所分配的长度是不同的,该函数上有可移植性)。请在 处填入正确内容。
wordlength()
{ int i;
unsigned int v= (1) ; /*将int型单元各二进制位置1*/
for(i=1;(v=v>>1)>0;i++); /*计算int单元中的位数*/
return( (2) );
}
2、请读以下函数:
getbits(unsigned x,unsigned p,unsigned n)
{ x=((x<<(p+1-n))&~((unsigned)~0>>n));
return(x);
}
假设机器的无符号整数字长为16位。
若调用此函数时x=0115032,p=7,n=4,则函数返回值的八进制数是 。
3、设有char a,b;若要通过a&b运算屏蔽掉a中的其它位,只保留第2和第8位(右起为第1位),则b的二进制数是 。
4、测试char型变量a第六位是否为1的表达式是 (设最右位是第一位)。
5、设二进制数x的值是11001101,若想通过x&y运算使x中的低4位不变,高4位清零,则y的二进制数是 。
6、请读程序片段:
unsigned a=16;
printf("%d,,%d,%d\n",a>>2,a=a>>2,a);
以上程序片段的输出结果是 。
7、若x=0123,则表达式5+(int)(x)&(~2)的值是 。
8、设x=10100011,若要通过x^y使x的高4位取反,低4位不变,则y的二进制数是 。
9、与表达式a&=b等价的另一书写形式是 。
10、与表达式x^=y-2等价的另一书写形式是 。
11、下面程序的功能是实现左右循环移位,当输入位移的位数是一正整数时循环右移,输入一负整数时循环左移。请在 处填入正确内容。
main()
{ unsigned a;
int n;
printf("请输入一个八进制数:");
scanf("%o",&a);
printf("请输入位移的位数:");
scanf("%d",&n);
if (1)
{ moveringht(a,n);
printf("循环右移的结果为:%o\n",moveright(a,n));
}
else
{ (2) ;
moveleft(a,n);
printf ("循环左移的结果为:%o\n",moveleft(a,n));
}
}
moveright(unsigned value,int n)
{ unsigned z;
z=(value>>n)|(value<<(16-n));
return(z);
}
moveletf(unsigned value,int n)
{ unsigned z;
(3) ;
return(z);
}
13、能将两字节变量x的高8位置全1,低字节保持不变的表达式是 。
14、a为任意整数,能将变量a中的各二进制位均置成1的表达式是 。
15、a为任意整数。能将变量a清零的表达式是 。
16、运用位运算,能将八进制数012500除以4,然后赋给变量a的表达式是 。
请写明题号~~
谢谢~~ 展开
1、以下函数的功能是计算所用计算机中int型数据的字长(即二进制位)的位数。(注:不同类型机器上int型数据所分配的长度是不同的,该函数上有可移植性)。请在 处填入正确内容。
wordlength()
{ int i;
unsigned int v= (1) ; /*将int型单元各二进制位置1*/
for(i=1;(v=v>>1)>0;i++); /*计算int单元中的位数*/
return( (2) );
}
2、请读以下函数:
getbits(unsigned x,unsigned p,unsigned n)
{ x=((x<<(p+1-n))&~((unsigned)~0>>n));
return(x);
}
假设机器的无符号整数字长为16位。
若调用此函数时x=0115032,p=7,n=4,则函数返回值的八进制数是 。
3、设有char a,b;若要通过a&b运算屏蔽掉a中的其它位,只保留第2和第8位(右起为第1位),则b的二进制数是 。
4、测试char型变量a第六位是否为1的表达式是 (设最右位是第一位)。
5、设二进制数x的值是11001101,若想通过x&y运算使x中的低4位不变,高4位清零,则y的二进制数是 。
6、请读程序片段:
unsigned a=16;
printf("%d,,%d,%d\n",a>>2,a=a>>2,a);
以上程序片段的输出结果是 。
7、若x=0123,则表达式5+(int)(x)&(~2)的值是 。
8、设x=10100011,若要通过x^y使x的高4位取反,低4位不变,则y的二进制数是 。
9、与表达式a&=b等价的另一书写形式是 。
10、与表达式x^=y-2等价的另一书写形式是 。
11、下面程序的功能是实现左右循环移位,当输入位移的位数是一正整数时循环右移,输入一负整数时循环左移。请在 处填入正确内容。
main()
{ unsigned a;
int n;
printf("请输入一个八进制数:");
scanf("%o",&a);
printf("请输入位移的位数:");
scanf("%d",&n);
if (1)
{ moveringht(a,n);
printf("循环右移的结果为:%o\n",moveright(a,n));
}
else
{ (2) ;
moveleft(a,n);
printf ("循环左移的结果为:%o\n",moveleft(a,n));
}
}
moveright(unsigned value,int n)
{ unsigned z;
z=(value>>n)|(value<<(16-n));
return(z);
}
moveletf(unsigned value,int n)
{ unsigned z;
(3) ;
return(z);
}
13、能将两字节变量x的高8位置全1,低字节保持不变的表达式是 。
14、a为任意整数,能将变量a中的各二进制位均置成1的表达式是 。
15、a为任意整数。能将变量a清零的表达式是 。
16、运用位运算,能将八进制数012500除以4,然后赋给变量a的表达式是 。
请写明题号~~
谢谢~~ 展开
1个回答
展开全部
第1题
(1)填(~0)
(2)填(i)
第2题 120000
第3题 10000010
第4题 a&32 != 0
第5题 00001111
第6题 1,,4,16
第7题 88
第8题 11110000
第9题 a=a&b
第10题 x=x^(y-2)
第11题
(1)填(n>0)
(2)填(n=-n)
(3)填(z=(value<<n)|(value>>(16-n));)
第12题
第13题 (x&\xFF00)
第14题 a = 255;
第15题 a = 0;
第16题 a = \o012500 / 4;
(1)填(~0)
(2)填(i)
第2题 120000
第3题 10000010
第4题 a&32 != 0
第5题 00001111
第6题 1,,4,16
第7题 88
第8题 11110000
第9题 a=a&b
第10题 x=x^(y-2)
第11题
(1)填(n>0)
(2)填(n=-n)
(3)填(z=(value<<n)|(value>>(16-n));)
第12题
第13题 (x&\xFF00)
第14题 a = 255;
第15题 a = 0;
第16题 a = \o012500 / 4;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询