如何在 C++ 中设置、清除和切换单个位?2024 年 8 月 29 日 | 4 分钟阅读 位运算符主要用于低级编程。位运算符允许我们设置、检查、清除或切换整数类型中的位。在嵌入式系统中,位运算符对端口或寄存器中的单个位执行位操作。在本文中,我们将讨论如何在 C++ 中设置、清除和切换单个位。 1. 设置位设置第 N 位意味着如果它是 0,则将其设置为 1;如果它是 1,则它保持不变。在 C++ 中,按位或运算符 (|) 用于指定整数数据类型的位。正如我们所知,"|"(按位或运算符)计算一个新的整数值,其中每个位位置为 1 仅当操作数(整数类型)在该位置具有 1 时。 示例让我们用一个 C++ 程序来实现位的设置。 输出 Setting up the third bit in the given number: 18 The resultant value = 26 说明 在此示例中,程序定义了一个名为 setting_bit 的特性,它接受参数:number(输入值)和 pos(要设置的位的位置)。在主函数中,一个实例范围 18 被初始化并保存在变量 number 中。之后,程序调用 setting_bit 方法并将 number 和位置作为参数传递。在 setting_bit 函数内部,按位或运算符(在广泛的范围内)。 表达式 (1 << pos) 计算一个值,其中第 N 位在位置 pos 处设置为 1,所有其他位设置为 0。与原始数字的按位或操作将范围中对应的位设置为 1(如果它最初是 0)。否则,它保持不变。结果函数用于使用 cout 语句显示在位置处设置的数字。 2. 清除位清除位意味着将其设置为 0(当它为 1 时),而不触及或影响其他位。此任务通过使用按位与和非运算符(按位非)来完成。按位非反转所有位,从 1 到 0,从 0 到 1。此按位非属性对于清除已设置的位很有用。 示例让我们用一个 C++ 程序来实现位的清除。 输出 Clearing up the third bit in the given number: 18 The resultant value = 26 说明 在此示例中,程序定义了一个名为 clearing_bit 的函数,它接受参数:number(输入范围)和 pos(要清除的位的位置)。在 clearing_bit 方法内部,范围中位置 pos 处的位通过与位掩码进行按位与操作来清除。 位掩码是通过在将 1 左移 pos 个位置的结果上使用按位 非运算符 (~) 来创建的。它将位置 pos 处的位设置为 0,并保持所有其他位不变。结果数字从 clearing_bit 函数返回。在主函数中,一个实例范围 12 被初始化并存储在变量 number 中。clearing_bit 函数以 number 和位置 3 作为参数调用,并返回 8 作为输出。 3. 切换位当一个位被切换时,该位处于其补码状态。如果该位当前已设置,则将其更改为未设置,反之亦然。我们可以使用按位 XOR ^ 运算符 来更改位。如果两个操作数的相应位不同,则按位 XOR 运算符更改为 1;如果它们相同,则更改为 0。 示例让我们用一个程序来实现 C++ 中位的切换。 输出 Toggling up the third bit in the given number: 16 The resultant value = 24 说明 在此示例中,程序使用一个名为 toggling_bit 的函数,它接受参数:quantity(输入范围)和 pos(要切换的位的位置)。在 toggling_bit 方法内部,数字中函数 pos 处的位通过与位掩码进行按位 XOR 操作 (^) 来切换。位掩码是通过将 1 左移 pos 个位置来创建的。 它创建一个值,其中函数 pos 处的简单位设置为 1,所有其他位设置为 0。按位 XOR 操作切换函数 pos 处的位,如果它最初是 1,则将其更改为 0,如果它最初是 0,则将其更改为 1。结果值从 toggling_bit 函数返回。在上述示例方法中,输入数字 16 被初始化并保存在变量 variety 中,并返回输出 24。 下一主题C++ 中的查找表 |
在本文中,我们将讨论 C++ 中 array::fill() 和 array::swap() 之间的区别。但在讨论它们的区别之前,我们必须先了解 array::fill() 和 array::swap()。C++ 标准模板库 (STL) 的两个成员函数,它们与 std::array 模板类相关……
阅读 4 分钟
我们可以在不使用第三个变量的情况下交换两个数字。有两种常见的方法可以在不使用第三个变量的情况下交换两个数字:使用 + 和 -,或使用 * 和 /。程序 1:使用 * 和 / 让我们看一个简单的 C++ 示例,在不使用第三个变量的情况下交换两个数字...
阅读1分钟
C++ 实现 Coppersmith Freivald 算法的程序。在本文中,我们将讨论 C++ 中 Coppersmith Freivald 算法的实现。但在深入其实现之前,我们必须了解 Coppersmith Freivald 算法。什么是 Coppersmith Freivald 算法?Coppersmith Freivald 算法是一种随机算法,用于...
阅读 4 分钟
ios::rdstate() 是 C++ 输入/输出流库的重要组成部分。它使程序员能够评估流的当前状态。理解此函数对于 C++ 程序进行可靠的错误处理和流管理至关重要。什么是 ios::rdstate() 函数?“rdstate”一词是指...
阅读 4 分钟
简介 在 C++ 中,函数对象是创建可与语言标准库中的算法、容器和其他功能一起使用的自定义操作的强大工具。以下是对 C++ 函数对象的全面解释:什么是函数对象?通常称为函数对象的函数对象(Functors)...
阅读 3 分钟
无序映射(unordered_map)是一种关联容器,它保存通过融合映射值和键值而创建的元素。元素由其键值唯一标识,映射值是与键相关联的内容。键和值都可以是...
阅读 4 分钟
在 C++ 中,自顶向下方法是一种编程方法,它涉及从问题概述开始,将其分解为更小的子问题,然后通过分层实现每个子问题来逐步构建解决方案。这种方法也称为“分解...
阅读 3 分钟
在 C++ 中,OOP 封装是指将数据和相关函数分组到单个类中。换句话说,封装定义为将代码和数据绑定(或包装)到一个单元中。它限制了对数据的直接访问,并允许进行受控的修改...
阅读9分钟
在本文中,您将学习 C++ 中运算符重载的规则。C++ 中运算符重载有几条规则。一些主要规则如下: 1. 语法 通过定义一个函数并后跟 operator 关键字来定义运算符重载...
阅读 3 分钟
引言:具有零的最大二叉树宽度是一个概念,需要找到二叉树任何级别的最大节点数,包括实际节点和可能出现零(或空节点)的位置。宽度定义为...
阅读9分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India