C语言—位运算符

目录

&(位与,AND):

|(位或,OR):

位取反(~):

左移(<<):

右移(>>):


&(位与,AND):

语法:a & b

作用:将两个整数的对应二进制位进行逐位与运算,如果对应位都为1,则结果对应位为1;否则为0。

|(位或,OR):

语法:a | b

作用:将两个整数的对应二进制位进行逐位或运算,如果对应位中至少有一个为1,则结果对应位为1;否则为0。

扫描二维码关注公众号,回复: 17054264 查看本文章

示例:

#include <stdio.h>

int main() {
    int a = 5; // 二进制表示为 0000 0101
    int b = 10; // 二进制表示为 0000 1010

    int and_result = a & b; // 0000 0000
    int or_result = a | b;  // 0000 1111

    printf("a & b: %d\n", and_result); // 输出 0
    printf("a | b: %d\n", or_result);  // 输出 15

    return 0;
}

位取反(~):

语法:~a

作用:对整数的二进制位进行逐位取反操作,即1变为0,0变为1。

#include <stdio.h>

int main() {
    int a = 5; // 二进制表示为 0000 0101
    int not_result = ~a; // 二进制表示为 1111 1010(补码)
    //输出时补码变原码
    printf("~a: %d\n", not_result); // 输出 -6

    return 0;
}

左移(<<):

语法:a << n

作用:将整数的二进制位向左移动n位,右侧用0填充。相当于将整数乘以2的n次方。

#include <stdio.h>

int main() {
    int a = 5; // 二进制表示为 0000 0101
    int left_shift_result = a << 2; // 二进制表示为 0001 0100

    printf("a << 2: %d\n", left_shift_result); // 输出 20

    return 0;
}

右移(>>):

语法:a >> n

作用:将整数的二进制位向右移动n位,左侧用符号位(对于有符号整数)或0填充(对于无符号整数)。相当于将整数除以2的n次方。

#include <stdio.h>

int main() {
    int a = 20; // 二进制表示为 0001 0100
    int right_shift_result = a >> 2; // 二进制表示为 0000 0101

    printf("a >> 2: %d\n", right_shift_result); // 输出 5

    return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_73800602/article/details/133563128
今日推荐