d326
我是參考這篇
就是把1右移a個單位,
假如要設成1那就要用|,因為|不管遇到1,0都會變成1,但是其他位我不要影響它,1,0跟0去做|運算值會不變
假如要設成0那要用&,0去做&運算1,0都會變成0,但是不能影響到其他位,所以其他位要變成1,那就要取補數
#include <stdio.h>
/* set bit b to 1 */
int set_bit(int v, int a)
{
return (1<<a)|v; ;
}
/* set bit b to 0 */
int unset_bit(int v, int a)
{
return (~(1<<a))&v;
}
/* check_bit b is 1 or 0 */
int check_bit(int v, int b, int a)
{
return (v>>a)&1;
}
int main(void)
{
int i, v, a, b;
while(scanf("%d %d %d",&v,&a,&b)==3)
{
if(b)
v = set_bit(v, a);
else
v = unset_bit(v, a);
for(i=31;i>=0;--i)
printf( "%d", check_bit(v, 32, i) );
putchar('\n');
}
return 0;
}