c语言,这句什么意思?运算符。。 f_b.y&(1<<i))>0
c语言,这句什么意思?运算符。。f_b.y&(1<<i))>0printf(“%d”,f_b.y&(1<<i))>0);...
c语言,这句什么意思?运算符。。
f_b.y&(1<<i))>0printf(“%d”,f_b.y&(1<<i))>0); 展开
f_b.y&(1<<i))>0printf(“%d”,f_b.y&(1<<i))>0); 展开
2个回答
展开全部
//【左移运算符"<<",表达式:a << b的值是:将a各二进位全部左移b位后得到的值。左移时,高位丢弃,低位补0。a 的值不因运算而改变。】1<<i是指1按位左移i位;例如
for (i=0;i<10;i++)printf("%d,",1<<i);
//结果为1,2,4,8,16,32,64,128,256,512,也就是2的指数倍的意思;
//1<<i可以理解为下面的for循环
for(i=1;i<=512;i=i*2)printf("%d,",i);
//【按位与运算符"&",它通常用来将某变量中的某些位清0且同时保留其他位不变。也可以用来获取某变量中的某一位。】f_b.y&(1<<i)是(找出结构体变量f_b内的变量)y值为2的倍数的位,其他位清零;
#include "stdio.h"
int main(void)
{
int i=1,y=1;
for(i=1;i<=512;i=i*2)
printf("%d,",y&i);
return 0;
}
//把上面代码复制到编译器中尝试结果1,0,0,0,0,0,0,0,0,0,
//手动改变y的值为2,再编译结果0,2,0,0,0,0,0,0,0,0,
//手动改变y的值为3,再编译结果1,2,0,0,0,0,0,0,0,0,
//手动改变y的值为4,再编译结果0,0,4,0,0,0,0,0,0,0,
//手动改变y的值为5,再编译结果1,0,4,0,0,0,0,0,0,0,
//手动改变y的值为6,再编译结果0,2,4,0,0,0,0,0,0,0,
//以此类推。。。。
//最后考虑f_b.y&(1<<i))>0;printf("%d",(f_b.y&(1<<i))>0);
for (i=0;i<10;i++)printf("%d,",1<<i);
//结果为1,2,4,8,16,32,64,128,256,512,也就是2的指数倍的意思;
//1<<i可以理解为下面的for循环
for(i=1;i<=512;i=i*2)printf("%d,",i);
//【按位与运算符"&",它通常用来将某变量中的某些位清0且同时保留其他位不变。也可以用来获取某变量中的某一位。】f_b.y&(1<<i)是(找出结构体变量f_b内的变量)y值为2的倍数的位,其他位清零;
#include "stdio.h"
int main(void)
{
int i=1,y=1;
for(i=1;i<=512;i=i*2)
printf("%d,",y&i);
return 0;
}
//把上面代码复制到编译器中尝试结果1,0,0,0,0,0,0,0,0,0,
//手动改变y的值为2,再编译结果0,2,0,0,0,0,0,0,0,0,
//手动改变y的值为3,再编译结果1,2,0,0,0,0,0,0,0,0,
//手动改变y的值为4,再编译结果0,0,4,0,0,0,0,0,0,0,
//手动改变y的值为5,再编译结果1,0,4,0,0,0,0,0,0,0,
//手动改变y的值为6,再编译结果0,2,4,0,0,0,0,0,0,0,
//以此类推。。。。
//最后考虑f_b.y&(1<<i))>0;printf("%d",(f_b.y&(1<<i))>0);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询