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

c++位运算总结

在C++中,位运算是对二进制位进行操作的运算,主要有以下几种:

1. 按位与( & ):两个操作数对应位都为1时,结果位才为1,否则为0。例如 3 & 5 , 3 二进制是 0000 0011 , 5 二进制是 0000 0101 ,运算结果为 0000 0001 ,即十进制的 1 。常用于获取某些位的值或屏蔽某些位。
2. 按位或( | ):两个操作数对应位只要有一个为1,结果位就为1,都为0时结果位才为0。如 3 | 5 ,结果是 0000 0111 ,即十进制 7 。可用于将某些位置为1。
3. 按位异或( ^ ):两个操作数对应位不同时,结果位为1,相同时为0。比如 3 ^ 5 ,结果是 0000 0110 ,即十进制 6 。可实现不使用临时变量交换两个数,如 a = a ^ b; b = a ^ b; a = a ^ b; 。
4. 按位取反( ~ ):将操作数的每一位取反,1变0,0变1。如 ~3 , 3 二进制 0000 0011 ,取反后是 1111 1100 ,在有符号数中表示 -4 。
5. 左移( << ):将操作数的二进制位向左移动指定的位数,右侧补0。如 3 << 2 , 3 二进制 0000 0011 ,左移2位后是 0000 1100 ,即十进制 12 ,相当于乘以 2 的移动位数次方。
6. 右移( >> ):将操作数的二进制位向右移动指定的位数,对于无符号数,左侧补0;对于有符号数,取决于编译器,有的补符号位(算术右移),有的补0(逻辑右移)。如 4 >> 1 , 4 二进制 0000 0100 ,右移1位后是 0000 0010 ,即十进制 2 ,相当于除以 2 。

以下是C++中各种位运算的示例代码,展示了按位与、按位或、按位异或、按位取反、左移和右移的用法:

#include <iostream>
using namespace std;

int main() {
    // 定义两个整数
    int a = 3;  // 二进制表示为 0000 0011
    int b = 5;  // 二进制表示为 0000 0101

    // 按位与运算
    int andResult = a & b;
    cout << "按位与运算结果: " << andResult << endl;

    // 按位或运算
    int orResult = a | b;
    cout << "按位或运算结果: " << orResult << endl;

    // 按位异或运算
    int xorResult = a ^ b;
    cout << "按位异或运算结果: " << xorResult << endl;

    // 按位取反运算
    int notResult = ~a;
    cout << "按位取反运算结果: " << notResult << endl;

    // 左移运算
    int leftShiftResult = a << 2;
    cout << "左移运算结果: " << leftShiftResult << endl;

    // 右移运算
    int rightShiftResult = a >> 1;
    cout << "右移运算结果: " << rightShiftResult << endl;

    return 0;
}
http://www.dtcms.com/a/98961.html

相关文章:

  • 使用Process子类创建进程
  • C++编程学习笔记:函数相关特性、引用与编译流程
  • TraeAI结合Proteus实现AI编程并仿真一个复杂工业物联网控制系统的开发(视频)
  • 力扣刷题494. 目标和
  • 【超详细教程】2025年3月最新Pytorch安装教程(同时讲解安装CPU和GPU版本)
  • Python3...(中国工信出版)读书笔记(1)python语言基础补充
  • 地下管线三维建模软件工具MagicPipe3D V3.6.1
  • Vue2 使用 v-if、v-else、v-else-if、v-show 以及 v-has 自定义指令实现条件渲染
  • [C++面试] 智能指针面试点(重点)续1
  • 飞书电子表格自建应用
  • JAVA反序列化深入学习(九):CommonsCollections7与CC链总结
  • 直接快速安装pytorch的cpu版本,在我的的 Python 3.8 + 虚拟环境 gdn 中安装
  • QT操作Word文档
  • The Rust Programming Language 学习 (七)
  • Windows 11系统下Kafka的详细安装与启动指南(JDK 1.8)
  • IvorySQL:兼容Oracle数据库的开源PostgreSQL
  • 【HTML 基础教程】HTML 链接
  • 多线程 - 线程安全引入
  • 什么是 实例化
  • Scala 数组
  • 排序算法2-选择排序
  • 07-SpringBoot3入门-整合druid连接池
  • Spring中的IOC及AOP概述
  • 高清电视 2.96| 免费高清电视直播
  • docker启动nacos+redis+seata
  • 【图像处理基石】什么是refocus?
  • 笔记本电脑更换主板后出现2203:System configuration is invalid,以及2201、2202系统错误的解决
  • AT24Cxx移植第三方库到裸机中使用
  • STM32单片机的桌面宠物机器人(基于HAL库)
  • Tomcat生产服务器性能优化