数论——位运算(C++)

#include<cstdio>
int n;
void x1_and()
{
    if (n&1)
      printf("奇数
");
    else
      printf("偶数
");
}
void x2_or()
{
    printf("%d
",n|1); //+1奇数 。 
    printf("%d
",(n|1)-1); //-1偶数。 
}
void x3_xor()
{
    printf("%d
",n^1); //奇偶转换,+1奇数,-1偶数。 
    printf("%d
",n^1^1); //类似于负负得正的规律。
}
void x4_not()
{
    unsigned short a=2;
    a=~a; //注意,不等同于直接输出~a。 
    printf("%d
",a); //处理后,a为short类型的最大值。
    unsigned int b=n;
    printf("%d
",~b); //此方式输出-b-1,注意,等同于如上方式处理任何整型。 
}
void x5_shl()
{
    printf("%d
",1<<n); //等同于1乘以2的n次方,故在二进制数后每加一个0,就相当于乘一次2。 
}
void x6_shr()
{
    printf("%d
",n>>1); //等同于n整除一次2的1次方。 
}
int main()
{
    scanf("%d",&n);
    x1_and(); //用于判断整数的奇偶。
    x2_or(); //用于临近的奇偶转换。
    x3_xor(); //注意,相同为0,不同为1,作用同上。
    x4_not();
    x5_shl();
    x6_shr();
    return 0;
}
原文地址:https://www.cnblogs.com/koruko/p/5221921.html