c语言编程笔录

首页 >   > 笔记大全

笔记大全

C语言中位运算符有哪些

更新时间:2023-07-09

介绍

位运算是计算机中常用的一种运算方式,它们是在二进制数字位上进行的运算。位运算符仅适用于整数类型,例如 intlong。C 语言中位运算符总共有 6 个,分别是:左移位运算符、右移位运算符、按位与运算符、按位或运算符、按位异或运算符和按位取反运算符。

左移位运算符 (<<)

左移位运算符 (<<) 按照指定的位数将给定的数向左移动,在右边用零填充空缺的各位。左移位运算符的语法如下所示:


result = num << x;

其中,num 是要进行运算符的数,x 是要移动的位数,result 是左移位运算符的结果。下面是一个简单的示例:


#include <stdio.h>

int main() {
    int num = 8, result;
    result = num << 2;
    printf("左移 2 位后的结果为 %d", result);
    return 0;
}

上述代码将输出 左移 2 位后的结果为 32

右移位运算符 (>>)

右移位运算符 (>>) 按照指定的位数将给定的数向右移动,丢弃右边多余的位。如果这个数是一个正数,则在左边插入零;如果这个数是一个负数,则在左边插入一组 1。右移位运算符的语法如下所示:


result = num >> x;

其中,num 是要进行运算符的数,x 是要移动的位数,result 是右移位运算符的结果。下面是一个简单的示例:


#include <stdio.h>

int main() {
    int num = 8, result;
    result = num >> 2;
    printf("右移 2 位后的结果为 %d", result);
    return 0;
}

上述代码将输出 右移 2 位后的结果为 2

按位与运算符 (&)

按位与运算符 (&) 的作用是对两个数的二进制形式进行按位与操作,这意味着将两个二进制数字的每一位进行比较,只有相同的位才输出 1。按位与运算符的语法如下所示:


result = num1 & num2;

其中,num1num2 是要进行运算符的数,result 是按位与运算符的结果。下面是一个简单的示例:


#include <stdio.h>

int main() {
    int num1 = 12, num2 = 25, result;
    result = num1 & num2;
    printf("按位与的结果为 %d", result);
    return 0;
}

上述代码将输出 按位与的结果为 8

按位或运算符 (|)

按位或运算符 (|) 的作用是对两个数的二进制形式进行按位或操作,这意味着将两个二进制数字的每一位进行比较,只要其中有一个为 1,就输出 1。按位或运算符的语法如下所示:


result = num1 | num2;

其中,num1num2 是要进行运算符的数,result 是按位或运算符的结果。下面是一个简单的示例:


#include <stdio.h>

int main() {
    int num1 = 12, num2 = 25, result;
    result = num1 | num2;
    printf("按位或的结果为 %d", result);
    return 0;
}

上述代码将输出 按位或的结果为 29

按位异或运算符 (^)

按位异或运算符 (^) 的作用是对两个数的二进制形式进行按位异或操作,这意味着将两个二进制数字的每一位进行比较,只有相同的位输出 0,不同的位输出 1。按位异或运算符的语法如下所示:


result = num1 ^ num2;

其中,num1num2 是要进行运算符的数,result 是按位异或运算符的结果。下面是一个简单的示例:


#include <stdio.h>

int main() {
    int num1 = 12, num2 = 25, result;
    result = num1 ^ num2;
    printf("按位异或的结果为 %d", result);
    return 0;
}

上述代码将输出 按位异或的结果为 21

按位取反运算符 (~)

按位取反运算符 (~) 的作用是对给定的数的二进制形式进行按位取反操作,这意味着每一位上的 0 都变成了 1,1 都变成了 0。按位取反运算符的语法如下所示:


result = ~num;

其中,num 是要进行运算符的数,result 是按位取反运算符的结果。下面是一个简单的示例:


#include <stdio.h>

int main() {
    int num = 12, result;
    result = ~num;
    printf("按位取反的结果为 %d", result);
    return 0;
}

上述代码将输出 按位取反的结果为 -13,原因是对于有符号整数,最高位为符号位,0 为正数,1 为负数,按位取反后得到的为负数。