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

【C++随记4】C++二进制位操作运算符

在C++中,二进制位操作运算符允许你直接对整数类型的变量的位进行操作。这些运算符包括:

按位与(Bitwise AND): &
按位或(Bitwise OR): |
按位异或(Bitwise XOR): ^
按位取反(Bitwise NOT): ~
左移(Left Shift): <<
右移(Right Shift): >>
下面是每个运算符的简单说明和示例:

按位与 (&)
描述:对于两个整数的对应位,如果都是1,则结果位是1;否则是0。
示例:

int a = 0b1010; // 二进制表示为 1010
int b = 0b1100; // 二进制表示为 1100
int c = a & b;  // 结果为 0b1000,即十进制的 8

按位或 (|)
描述:对于两个整数的对应位,如果至少有一个是1,则结果位是1;如果都是0,则结果位是0。
示例:

int a = 0b1010; // 二进制表示为 1010
int b = 0b1100; // 二进制表示为 1100
int c = a | b;  // 结果为 0b1110,即十进制的 14

按位异或 (^)
描述:对于两个整数的对应位,如果相同则结果位是0;如果不同则结果位是1。
示例:

int a = 0b1010; // 二进制表示为 1010
int b = 0b1100; // 二进制表示为 1100
int c = a ^ b;  // 结果为 0b0110,即十进制的 6

按位取反 (~)
描述:将整数的所有位取反,即1变为0,0变为1。
示例:

int a = 0b1010; // 二进制表示为 1010
int b = ~a;     // 结果为 0b0101,即十进制的 -11 (考虑到符号位扩展)

左移 (<<)
描述:将整数的所有位向左移动指定的位数,右边空出的位用0填充。
示例:

int a = 0b1010; // 二进制表示为 1010
int b = a << 2; // 结果为 0b101000,即十进制的 40

右移 (>>)
描述:将整数的所有位向右移动指定的位数。对于无符号数,左边空出的位用0填充;对于有符号数,根据实现的不同,可能用符号位填充(算术右移)或用0填充(逻辑右移)。
示例:

unsigned int a = 0b1010; // 二进制表示为 1010
unsigned int b = a >> 2; // 结果为 0b0010,即十进制的 2int c = 0b1010; // 二进制表示为 1010
int d = c >> 2; // 结果为 0b0010,即十进制的 2(假设使用逻辑右移)

请注意,在使用位操作时,通常需要确保操作的数是整数类型(如int, unsigned int, char, unsigned char等),因为浮点类型不支持位操作。此外,位操作符的优先级通常低于算术操作符,因此在复杂的表达式中可能需要使用括号来明确操作的顺序。

http://www.lryc.cn/news/343209.html

相关文章:

  • 风电厂数字孪生3D数据可视化交互展示构筑智慧化电厂管理体系
  • 大模型市场爆发式增长,但生成式AI成功的关键是什么?
  • leetcode LCR088.使用最小花费爬楼梯
  • 【DevOps】怎么提升Elasticsearch 的搜索性能
  • 启动任何类型操作系统:不需要检索 ISO 文件 | 开源日报 No.243
  • Linux——综合实验
  • oracle数据库用户名修改
  • 2024年开抖音小店需要多少钱?你真的知道吗?最新入驻条件及费用
  • Vue创建todolist
  • 了解Ansible Playbook
  • nginx 负载均衡、反向代理实验
  • Linux信号捕捉
  • 【Leetcode】 top100 round2 需要加强版
  • ElasticSearch知识点汇总
  • phpize +Visual Studio + MSYS2 + bison 草稿记录并未正常完成
  • 网络安全与IP地址的关联
  • 罗德与施瓦茨 SMC100A信号发生器9kHz至3.2 GHz
  • 新能源汽车充电站智慧充电电能服务综合解决方案
  • pytest(二):关于pytest自动化脚本编写中,初始化方式setup_class与fixture的对比
  • 项目中遇到的问题
  • Deeplab的复现(pytorch实现)
  • input上添加disabled=“true“,点击事件失效处理办法
  • 精酿啤酒的魅力:啤酒的与众不同风味
  • 检测机构的双资质是什么?
  • 基于springboot的校园食堂订餐系统
  • 基于SpringBoot的高校推荐系统
  • 了解 websocket
  • C++中erase函数的用法
  • 数字旅游以科技创新为核心竞争力:推动旅游服务的智能化、高效化,满足游客日益增长的旅游需求
  • (MATLAB)安装指南