C语言位运算与移位运算

    科技2022-07-13  108

    位是针对二进制的运算 按位取反:

    #include<stdio.h> int main() { int a = -5; printf("%d", ~a); }

    位与:

    #include<stdio.h> int main() { int a = 5; int b = 8; printf("%d", a&b); }

    位或:

    #include<stdio.h> int main() { int a = 5; int b = 8; printf("%d", a|b); }

    位异或:

    #include<stdio.h> int main() { int a = 5; int b = 1; printf("%d", a^b); }

    位异或可以交换值:

    #include<stdio.h> int main() { int a = 5; int b = 1; int c; c = a ^ b; a = c ^ a; b = c ^ a; printf("%d\n", a); printf("%d\n", b); }

    交换值的其他方法:

    #include<stdio.h> int main() { int a = 5; int b = 1; int c; c = a + b; a = c - a; b = c - a; printf("%d\n", a); printf("%d\n", b); } #include<stdio.h> int main() { int a = 5; int b = 1; int c; c = a ; a = b; b = c; printf("%d\n", a); printf("%d\n", b); }

    移位:向某个方向移动几就相当于除以2的几次方或乘以2的几次方。 向右移位除以2的几次方:

    #include<stdio.h> int main() { int a = 6; printf("%d\n", a>>1); }

    想左移位相当于乘以2的几次方:

    #include<stdio.h> int main() { int a = 6; a<<=1; printf("%d\n", a); }
    Processed: 0.015, SQL: 8