• 逍遥自在学C语言 | 位运算符的基础用法


    前言

    一、人物简介

    • 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。

    • 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。

    二、构成和表达方式

    • 位运算符是一组用于在二进制数之间进行操作的运算符
    运算符 名称 示例
    & 位与 a && b
    | 位或 a | b
    ^ 位异或 a ^ b
    ~ 位取反 ~a
    << 二进制左移 a << 2
    >> 二进制右移 a >> 2

    三、位运算符的应用

    1、位与运算符 (&)

    • 位与运算符用符号 & 表示。

    • 如果两个操作数的对应位都为1,则位与运算的结果为1,否则结果为0

    • 示例代码

    #include 
    
    int main() {
      int a = 13; //二进制表示为0b1101
      int b = 11; //二进制表示为0b1011
      int c = a & b;
      printf("%d\n", c); //输出结果为9,二进制表示为0b1001
      return 0;
    }
    

    2、位或运算符 (|)

    • 位或运算符用符号 | 表示。

    • 如果两个操作数的对应位中至少有一个为1,则位或运算的结果为1,否则结果为0。

    • 示例代码

    #include 
    
    int main() {
      int a = 13; //二进制表示为0b1101
      int b = 11; //二进制表示为0b1011
      int c = a | b;
      printf("%d\n", c); //输出结果为15,二进制表示为0b1111
      return 0;
    }
    

    3、位异或运算符 (^)

    • 位异或运算符用符号 ^ 表示

    • 如果两个操作数的对应位不同,则位异或运算的结果为1,否则结果为0

    • 示例代码

    #include 
    int main() {
      int a = 13; //二进制表示为0b1101
      int b = 11; //二进制表示为0b1011
      int c = a ^ b;
      printf("%d\n", c); //输出结果为6,二进制表示为0b0110
      return 0;
    }
    

    4、位取反运算符 (~)

    • 位取反运算符用符号 ~ 表示

    • 它会对操作数的每个二进制位取反,即0变成1,1变成0

    • 示例代码

    #include 
    
    int main() {
      int a = 13; //二进制表示为0b1101
      int b = ~a;
      printf("%d\n", b); //输出结果为-14,二进制表示为0b11111111111111111111111111110010
      return 0;
    }
    

    5、左移运算符 (<<)

    • 左移运算符用符号 << 表示

    • 它将操作数的所有二进制位向左移动指定的位数,并在低位填充0

    • 示例代码

    #include 
    
    int main() {
      int a = 13; //二进制表示为0b1101
      int b = a << 2;
      printf("%d\n", b); //输出结果为52,二进制表示为0b110100
      return 0;
    }
    

    6、右移运算符 (>>)

    • 右移运算符用符号 >> 表示。

    • 它将操作数的所有二进制位向右移动指定的位数,并在高位填充0或1(具体取决于操作数的符号)

    • 示例代码

    #include 
    
    int main() {
      int a = 13; //二进制表示为0b1101
      int b = a >> 2;
      printf("%d\n", b); //输出结果为3,二进制表示为0b0011
      return 0;
    }
    

    小结

    通过本文的讲解,我们学会了6种位运算符的基础用法,在接下来的文章中,将会继续介绍这6种位运算符的高级用法。

  • 相关阅读:
    Flume基本使用--mysql数据输出
    MySQL---触发器详解
    C语言刷题系列——6.(递归)实现顺序输出整数
    入门力扣自学笔记74 C++ (题目编号710)(未理解)
    LeetCode每日一题(931. Minimum Falling Path Sum)
    【JavaScript】用类的操作对CSDN社区管理菜单栏优化
    Redis关闭持久化
    印象深刻的bug汇总(持续更新)
    iOS 关于UIDatePicker常见使用方法
    Hive 数据仓库介绍
  • 原文地址:https://www.cnblogs.com/Wayne123/p/17298225.html