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;
}