C++中实现位运算的示例代码

 更新时间:2026年03月12日 08:21:31   作者:保定思睿 C++ 教研室  
位运算是对二进制数的每一位进行的操作,本文介绍了计算机中的位运算概念及常见操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、位运算概念

计算机唯一识别的数据的二进制数据,计算机中所有数据都以二进制形式存储,即 0 和 1 两种状态。计算机对二进制数据进行的运算(算数运算、逻辑运算等)被称为位运算,即对二进制数的每一位进行操作的运算。

二、位运算符号

运算符作用说明
&按位与两个操作数同时为1,结果为1
按位或两个操作数同时为0,结果为0

~

按位非

操作数为1,结果为0;操作数为0,结果为1

^

按位异或

两个操作数相同,结果为0;不相同结果为1

<< 

左移

右侧空位补0

>> 

右移

左侧空位补符号位

按位与的用途:需要清零的位与0进行与操作;需要保留的某些位与1进行与操作。

按位或的用途:将置1的某些位与1进行或,需要保持的某些位与0进行或。

三、代码解析

#include <iostream>
#include <iomanip>  // 仅用于格式化二进制输出,无额外子函数
using namespace std;

int main() {
    
    cout << "=== 基础位运算示例 ===" << endl;
    int a = 6;   // 二进制:00000110
    int b = 10;  // 二进制:00001010

    // 1. 按位与 &
    int andResult = a & b;  // 00000010 → 2
    cout << "a & b = " << andResult << "  ";
    for (int i = 7; i >= 0; i--) 
        cout << ((andResult >> i) & 1);
    cout << endl;

    // 2. 按位或 |
    int orResult = a | b;   // 00001110 → 14
    cout << "a | b = " << orResult << "  ";
    for (int i = 7; i >= 0; i--) 
        cout << ((orResult >> i) & 1);
    cout << endl;

    // 3. 按位异或 ^
    int xorResult = a ^ b;  // 00001100 → 12
    cout << "a ^ b = " << xorResult << "  ";
    for (int i = 7; i >= 0; i--) 
        cout << ((xorResult >> i) & 1);
    cout << endl;

    // 4. 按位取反 ~(仅显示低8位)
    int notResult = ~a;
    cout << "~a = " << notResult << "  ";
    for (int i = 7; i >= 0; i--) 
        cout << (((unsigned int)notResult & 0xFF) >> i & 1);
    cout << endl;

    // 5. 左移 <<
    int leftShift = a << 2; // 00011000 → 24
    cout << "a << 2 = " << leftShift << "  ";
    for (int i = 7; i >= 0; i--) 
        cout << ((leftShift >> i) & 1);
    cout << endl;

    // 6. 右移 >>
    int rightShift = b >> 1; // 00000101 → 5
    cout << "b >> 1 = " << rightShift << "  ";
    for (int i = 7; i >= 0; i--) 
        cout << ((rightShift >> i) & 1);
    
    cout << "\n=====================" << endl;

    // ===================== 第二部分:位运算实用技巧 =====================
 
    // 技巧1:判断奇偶
    int num1 = 15, num2 = 16;
    cout << num1 << " 是" << ((num1 & 1) ? "奇数" : "偶数") << endl;
    cout << num2 << " 是" << ((num2 & 1) ? "奇数" : "偶数") << endl;

    // 技巧2:交换两个数(无需临时变量)
    int x = 8, y = 12;
    cout << "\n交换前:x=" << x << ", y=" << y << endl;
    x = x ^ y;
    y = x ^ y;
    x = x ^ y;
    cout << "交换后:x=" << x << ", y=" << y << endl;

    // 技巧3:将某一位置1(第3位,从0计数)
    int val = 5; // 00000101
    int bitPos = 3;
    val |= (1 << bitPos); // 00001101 → 13
    cout << "\n将第" << bitPos << "位置1后:" << val << endl;

    // 技巧4:将某一位清零(第2位)
    val = 13; // 00001101
    bitPos = 2;
    val &= ~(1 << bitPos); // 00001001 → 9
    cout << "将第" << bitPos << "位清零后:" << val << endl;

    // 技巧5:判断某一位是否为1(第1位)
    val = 9; // 00001001
    bitPos = 1;
    bool is1 = (val & (1 << bitPos)) != 0;
    cout << "第" << bitPos << "位是" << (is1 ? "1" : "0") << endl;

    // 技巧6:快速计算2的n次方
    bitPos = 5;
    int pow2 = 1 << bitPos; // 32
    cout << "2^" << bitPos << " = " << pow2 << endl;

    
    return 0;
}

到此这篇关于C++中实现位运算的示例代码的文章就介绍到这了,更多相关C++ 位运算内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入理解C语言中编译相关的常见错误

    深入理解C语言中编译相关的常见错误

    本篇文章是对C语言中编译相关的常见错误进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 使用C语言实现学生成绩管理系统

    使用C语言实现学生成绩管理系统

    这篇文章主要介绍了使用C语言实现学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • C++ 中类的拷贝、赋值、销毁的实例详解

    C++ 中类的拷贝、赋值、销毁的实例详解

    这篇文章主要介绍了C++ 中类的拷贝、赋值、销毁的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • C++类和对象实例解析(二)

    C++类和对象实例解析(二)

    这篇文章主要介绍了C++类和对象,从定义出发再到实例解析,深入的理解C++类和对象,需要的朋友可以参考下
    2015-08-08
  • 利用C++模拟实现STL容器:list

    利用C++模拟实现STL容器:list

    列表是一种顺序容器,它允许在序列中的任何位置执行常量时间插入和删除操作,并允许在两个方向上进行迭代。本文将利用C++模拟实现list,希望对大家有所帮助
    2022-12-12
  • C++中的构造函数与析造函数详解

    C++中的构造函数与析造函数详解

    这篇文章主要介绍了C++中的构造函数与析造函数详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • C++ 类的构造函数详解及实例

    C++ 类的构造函数详解及实例

    这篇文章主要介绍了C++ 类的构造函数详解及实例的相关资料,学习C++ 的朋友对构造函数肯定不陌生,非常重要的基础知识,这里就详细介绍下,需要的朋友可以参考下
    2016-12-12
  • 讲解C++中的枚举类型以及声明新类型的方法

    讲解C++中的枚举类型以及声明新类型的方法

    这篇文章主要介绍了讲解C++中的枚举类型以及声明新类型的方法,是C预言入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • C++中运算符重载的规则语法实例

    C++中运算符重载的规则语法实例

    今天小编就为大家分享一篇关于C++中运算符重载的规则语法实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • C++中的cout、cerr、clog使用及说明

    C++中的cout、cerr、clog使用及说明

    C++中cout、cerr、clog均为输出流对象,区别在于缓冲机制:cout有缓冲,用于常规输出;cerr无缓冲,立即显示错误信息;clog有缓冲,适合日志记录,选择时需根据场景,注意性能和线程安全问题
    2025-09-09

最新评论