用C语言编写程序实现如下功能:
代码中包含3个函数:set_biti、clear_biti、main
第1个函数(set_biti(void))实现功能:对a的第i位置1;
第2个函数(clear_biti(void))实现功能:对a的第i位清0。
(注意:i为参数,在以上两个函数的位操作过程中,要保持其它位不变。)
主函数(main),实现功能:给定一个数a(假定其值为:0xBF35A725);调用函数1对第2、7、13、15、23位置1,并用printf函数打印输出结果;调用函数1对第3、4、5、14、17位清0,并用printf函数打印输出结果。
有大神会做吗?
int set_biti(int n,int i)
{
int a = 1;
a<<i;
n |= a;
return n;
}
int clear_biti(int &n,int i)
{
int a = 1;
a<<i;
a = ~a;
n&=a;
return n;
}
int main()
{
int n;
scanf("%d",&n);
n = set_biti(n,2);
n = set_biti(n,7);
n = set_biti(n,13);
n = set_biti(n,15);
n = set_biti(n,23);
printf("%d\n",n);
n = clear_biti(n,3);
n = clear_biti(n,4);
n = clear_biti(n,5);
n = clear_biti(n,14);
n = clear_biti(n,17);
printf("%d\n",n);
return 0;
}
第i位是从0算起的吗?只需要定义一个整型值为1,然后通过左移来使指定位为1,再与原数值进行或操作就可以了