当前位置: 首页 > news >正文

C语言---位运算符的分类与用法(按位与、按位或 |、按位异或^、按位取反~、左移<<、右移>>)

目录

位运算

        1、位运算符

        2、各类运算符的用法

        (1) 按位与(&)

        (2) 按位或( | )

        (3) 按位异或( ^ )

        (4) 按位取反( ~ )

        (5) 左移 (<<)

        (6) 右移(>>)


位运算

        1、位运算符

        位运算符被用来根据缘由改变引脚高低状态,从而引起外部变化。运算符包含以下几种:

         *均要求操作数必须是整型或与整型相兼容的数据类型。

        2、各类运算符的用法

        (1) 按位与(&)

        概念:按位与(&)用来进行指定位清零操作,即其余位状态不变,指定位清零。是一种双目运算符,需要两个操作数。

        使用规则:两个都是 1 结果才是 1。

eg1. 对 2 和 6 进行按位与操作 (2 的二进制为:0000 0010 ;6 的二进制为:0000 0110),结果为 2 (0000 0010)

int main(void)
{int i = 2;int j = 6;printf("%d\n", i & j);
}

eg2. 对 0xAA 和 0xEF 进行按位与操作  (0xFF:1111 1111 ;  0xEF:1110 1111),结果为 0xEF(1110 1111)

int main(void)
{unsigned char P2 = 0xFF;P2 &= 0xEF;printf("%X\n", p2);return 0;
}

        (2) 按位或( | )

        概念:按位或( | )用来进行指定位置 1 操作。是一种双目运算符,需要两个操作数。

        使用规则:有一个为 1 结果就是 1。

eg. 对 0xAA 和 0x48 进行按位或操作  (0xAA:1010 1010 ; 0x48:0100 1000),结果为 0xEA(1110 1010)

int main(void)
{unsigned char P2 = 0xAA;P2 |= 0x48;return 0;
}

        (3) 按位异或( ^ )

        概念:按位异或( ^ )用来进行指定位翻转操作。是一种双目运算符,需要两个操作数。

        使用要求:不同为1,相同为0。

eg. 对 0x0A 和 0x0D 进行异或操作  (0x0A:0000 1010;  0x0D:0000 0111),结果为 0x07(0000 0111)

int main(void)
{unsigned char P2 = 0x0A;P2 ^= 0x0D;printf("%X\n", p2);return 0;
}

        (4) 按位取反( ~ )

        概念:按位取反( ~ )用来进行全翻转操作。是一种单目运算符,只需要一个操作数。

        使用规则:是 1 取0,是 0 取1。

        (5) 左移 (<<)

         概念:左移(<<)用来进行指定位左移操作。是一种双目运算符,需要两个操作数。

         使用规则:在末尾补0 。

 eg. 对 0xFFFFFFFF 进行左移 2 的操作

int main(void)
{int i = 0xFFFFFFFF;i <<= 2;printf("%X\n", i);return 0;
}
0xFFFFFFFF: 1111 1111 1111 1111 1111 1111 1111 1111
左移2            : 11 1111 1111 1111 1111 1111 1111 1100
 在末尾进行补零操作

        (6) 右移(>>)

         概念:右移(>>)用来进行指定位左移操作。是一种双目运算符,需要两个操作数。

eg. 下列代码输出结果为 0xDF

int main(void)
{unsigned char P0 = 0xFF;P0 &= ~((1 << 3) | (1 << 5));printf("%X\n", P0);return 0;
}

【END】

http://www.dtcms.com/a/309392.html

相关文章:

  • 【前端】CSS Flexbox布局示例介绍
  • 应用药品注册证识别技术,为医药行业的合规、高效与创新发展提供核心驱动力
  • 数据结构:算法复杂度与空间复杂度
  • 《协作画布的深层架构:React与TypeScript构建多人实时绘图应用的核心逻辑》
  • 提升文档管理:推荐一键Docker部署的全文索引搜索引擎工具
  • Ubuntu 24.04.2 LTS 安装mysql8.0.36保姆级教程(从安装到远程连接)
  • ZKmall开源商城微服务架构电商平台:服务注册与配置中心设计
  • 如何创建一个飞书应用获取自己的飞书AppID和AppSecret?
  • Spring之【循环引用】
  • 第三阶段—8天Python从入门到精通【itheima】-140节(pysqark实战——基础准备)
  • 江协科技STM32 12-2 BKP备份寄存器RTC实时时钟
  • 二分查找(基础)
  • 启动中国蚁剑
  • 东芝时钟控制的双极步进电机驱动器TB67S209FTG
  • 关于皮带机流水线的控制思想解析
  • Sklearn 机器学习 文本数据 TF-IDF实现文本向量化
  • Linux 内存管理之 Rmap 反向映射
  • 每天一点跑步运动小知识
  • 使用gcc代替v语言的tcc编译器提高编译后二进制文件执行速度
  • 分布在背侧海马体CA1区域的位置细胞(place cells)对NLP中的深层语义分析的积极影响和启示
  • Ⅹ—6.计算机二级综合题23---26套
  • CIFAR10实战
  • gitlab+jenkins的ci/cd部署
  • 报错[Vue warn]: Failed to resolve directive: else如何解决?
  • PyTorch分布式训练:从入门到精通
  • 什么是CI/CD?
  • python学智能算法(三十))|SVM-KKT条件的数学理解
  • 测试平台如何重塑CI/CD流程中的质量协作新范式
  • LLM Prompt与开源模型资源(1)提示词工程介绍
  • 全新发布|知影-API风险监测系统V3.3,AI赋能定义数据接口安全新坐标