c++11 标准模板(STL)(std::bitset)(四)

news2024/12/24 9:48:02
定义于头文件 <bitset>

template< std::size_t N >
class bitset;

 类模板 bitset 表示一个 N 位的固定大小序列。可以用标准逻辑运算符操作位集,并将它与字符串和整数相互转换。

bitset 满足可复制构造 (CopyConstructible) 及可复制赋值 (CopyAssignable) 的要求。

模板形参

N-要为 bitset 分配存储的位数

成员类型

reference

表示到一个位的引用的代理类
(类)


修改器

进行二进制与、或、异或及非

std::bitset<N>::operator&=,|=,^=,~

bitset<N>& operator&=( const bitset<N>& other );

(1)(C++11 前)

bitset<N>& operator&=( const bitset<N>& other ) noexcept;

(C++11 起)

bitset<N>& operator|=( const bitset<N>& other );

(2)(C++11 前)

bitset<N>& operator|=( const bitset<N>& other ) noexcept;

(C++11 起)

bitset<N>& operator^=( const bitset<N>& other );

(3)(C++11 前)

bitset<N>& operator^=( const bitset<N>& other ) noexcept;

(C++11 起)

bitset<N> operator~() const;

(4)(C++11 前)

bitset<N> operator~() const noexcept;

(C++11 起)

 行二进制与、或、异或及非。

1) 设置位为 *thisother 的位的对应对上二进制与的结果。

2) 设置位为 *thisother 的位的对应对上二进制或的结果。

3) 设置位为 *thisother 的位的对应对上二进制异或的结果。

4) 返回翻转所有位的 *this 的临时副本(二进制非)。

注意 &= 、 |= 、 和 ^= 仅对拥有相同大小 N 的 bitset 定义。

参数

other-另一 bitset

返回值

1-3) *this

4) bitset<N>(*this).flip()

进行二进制左移和右移

std::bitset<N>::operator<<,<<=,>>,>>=

bitset<N> operator<<( std::size_t pos ) const;

(1)(C++11 前)

bitset<N> operator<<( std::size_t pos ) const noexcept;

(C++11 起)

bitset<N>& operator<<=( std::size_t pos );

(2)(C++11 前)

bitset<N>& operator<<=( std::size_t pos ) noexcept;

(C++11 起)

bitset<N> operator>>( std::size_t pos ) const;

(3)(C++11 前)

bitset<N> operator>>( std::size_t pos ) const noexcept;

(C++11 起)

bitset<N>& operator>>=( std::size_t pos );

(4)(C++11 前)

bitset<N>& operator>>=( std::size_t pos ) noexcept;

(C++11 起)

进行二进制左移和二进制右移。移入零。

1-2) 进行二进制左移。 (2) 是破坏性的,即对当前对象进行迁移。

3-4) 进行二进制右移。 (4) 是破坏性的,即对当前对象进行迁移。

参数

pos-移动位的位置数

返回值

1,3) 含有被迁移位的新 bitset 对象

2,4) *this

 

调用示例

#include <iostream>
#include <bitset>
#include <string>

template<size_t _Nb>
void printBitset(const std::string &name, const std::bitset<_Nb> &bitset)
{
    std::cout << name << ":  ";
    for (size_t index = 0; index < bitset.size(); index++)
    {
        std::cout << bitset[index] << " ";
    }
    std::cout << std::endl;
}

int main()
{
    std::cout << std::boolalpha;
    std::bitset<8> bitset1("101010");
    std::bitset<8> bitset2("100011");
    std::cout << "bitset1:              " << bitset1 << std::endl;
    std::cout << "bitset2:              " << bitset2 << std::endl;
    //1) 设置位为 *this 与 other 的位的对应对上二进制与的结果。
    std::cout << "bitset1 & bitset2:    " << (bitset1 & bitset2) << std::endl;
    //2) 设置位为 *this 与 other 的位的对应对上二进制或的结果。
    std::cout << "bitset1 | bitset2:    " << (bitset1 | bitset2) << std::endl;
    //3) 设置位为 *this 与 other 的位的对应对上二进制异或的结果。
    std::cout << "bitset1 ^ bitset2:    " << (bitset1 ^ bitset2) << std::endl;
    //4) 返回翻转所有位的 *this 的临时副本(二进制非)。
    std::bitset<8> bitset3 = ~bitset1;
    std::cout << "~bitset1:             " << bitset3 << std::endl;
    std::cout << std::endl;


    //进行二进制左移和二进制右移。移入零。
    //1-2) 进行二进制左移。 (2) 是破坏性的,即对当前对象进行迁移。
    std::bitset<8> bitset5("101010");
    std::bitset<8> bitset6 = bitset5 << 3;
    std::cout << "bitset5:              " << bitset5 << std::endl;
    std::cout << "bitset6:              " << bitset6 << std::endl;
    std::bitset<8> bitset7 = bitset5 <<= 3;
    std::cout << "bitset5:              " << bitset5 << std::endl;
    std::cout << "bitset7:              " << bitset7 << std::endl;

    //进行二进制左移和二进制右移。移入零。
    //3-4) 进行二进制右移。 (4) 是破坏性的,即对当前对象进行迁移。
    std::bitset<8> bitset8("101010");
    std::bitset<8> bitset9 = bitset8 >> 3;
    std::cout << "bitset8:              " << bitset5 << std::endl;
    std::cout << "bitset9:              " << bitset9 << std::endl;
    std::bitset<8> bitset10 = bitset8 >>= 3;
    std::cout << "bitset8:              " << bitset5 << std::endl;
    std::cout << "bitset10:             " << bitset10 << std::endl;
    std::cout << std::endl;

    return 0;
}

输出

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/610407.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试真题 Java 实现【矩阵稀疏扫描】【2023 B卷 100分】,附详细解题思路

一、题目描述 如果矩阵中的许多系数都为零&#xff0c;那么该矩阵就是稀疏的。对稀疏现象有兴趣是因为它的开发可以带来巨大的计算节省&#xff0c;并且在许多大的实践中都会出现矩阵稀疏的问题。 给定一个矩阵&#xff0c;现在需要逐行和逐列地扫描矩阵&#xff0c;如果某一…

使用阿里云免费Serverless函数计算产品资源安装 Stable Diffusion

喜欢用 Stable Diffusion 的小伙伴注意了&#xff01;上一篇介绍了使用谷歌的 Colab 免费资源来安装这个画图神器。 但因为资源是免费的&#xff0c;高峰时期有可能会被谷歌断掉服务的连接&#xff0c;像周末这种使用高峰&#xff0c;GPU 的资源得不到保证。 没关系&#xff0c…

WPF开发txt阅读器:需求分析和文件读写

文章目录 需求分析读取文本文件保存文本文件 需求分析 尽管现在比较主流的阅读格式已经是epub, modi之类的&#xff0c;但txt的使用范围要远比前两者广泛&#xff0c;所以做一个txt阅读器还是有必要的。 但是对于书籍阅读而言&#xff0c;纯文本不包含目录信息&#xff0c;这…

chatgpt赋能python:Python奇数偶数判断:从基础语法到优化运行

Python奇数偶数判断&#xff1a;从基础语法到优化运行 Python是一门简单易学的编程语言&#xff0c;并且在科学计算、数据处理和人工智能等领域都有广泛的应用。在Python中&#xff0c;判断一个数是奇数还是偶数是一个基础问题&#xff0c;本文将介绍Python中奇数偶数的判断方…

事务与项目跟踪软件Jira

本文软件应网友 不长到一百四誓不改名 要求折腾&#xff1b; 什么是 Jira &#xff1f; Jira 是由 Atlassian 开发的跟踪和管理任务的软件开发工具&#xff0c;您可以将它用于敏捷和瀑布项目管理&#xff0c;以跟踪错误、功能和其他工作项。您还可以将 JIRA 配置为与许多服务管…

Leetcode之二分查找

1. 二分查找 二分查找的前提条件是&#xff1a;有序数组。 二分查找的递归实现&#xff1a; class Solution: def search_recur(self,nums:List[int],low:int,high:int,target:int):if low > high:return -1mid low (high - low) // 2if nums[mid] target:return midel…

chatgpt赋能python:Python在线播放——让您轻松畅览优质视频

Python在线播放——让您轻松畅览优质视频 在数字时代&#xff0c;视频已经成为了一种不可或缺的媒体形式&#xff0c;人们在在日常生活和工作中也更多地借助视频来实现信息传递和沟通。Python在线播放是当下最受欢迎的视频播放方式之一&#xff0c;相比于下载、实时流媒体等方…

Coursera自动驾驶2.3-2.4——传感器:IMU,GNSS,LiDAR

文章目录 一、3D几何和参考系1.旋转变换2.参考系 二、惯性测量单元1.陀螺仪2.加速计 三、全球导航卫星系统&#xff08;GNSS&#xff09;四、激光雷达1.激光雷达和测量模型&#xff08;1&#xff09;激光雷达概述&#xff08;2&#xff09;测量模型 2.点云3.平面拟合4.点云匹配…

Docker 基本管理

一、Docker 概述 Docker是一个开源的应用容器引擎&#xff0c;基于go语言开发并遵守了apache2.0协议开源。 Docker是在Linux容器里运行应用的开源工具&#xff0c;是一种轻量级的“虚拟机”。 Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自…

rimraf : 无法加载文件 C:\Program Files\nodejs\rimraf.ps1,因为在此系统上禁止运行脚本。

问题&#xff1a; rimraf 运行 rimraf node_modules 命令报错&#xff1a;&#xff08;rimraf 前端同学可以多多了解&#xff09;rimraf : 无法加载文件 C:\Program Files\nodejs\rimraf.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/…

C#,码海拾贝(34)——求“赫申伯格矩阵”全部“特征值”的“QR方法”之C#源代码

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 矩阵类 /// 作者&#xff1a;周长发 /// 改进&#xff1a;深度混淆 /// https://blog.csdn.net/beijinghorn /// </summary> public partial class Matrix {…

chatgpt赋能python:Python基本词汇介绍

Python基本词汇介绍 Python是一种高级编程语言&#xff0c;它有着广泛的应用&#xff0c;从软件开发到数据科学。Python的语法简单易懂&#xff0c;它被广泛认为是一种易于学习和使用的编程语言。在本文中&#xff0c;我们将介绍一些Python基本词汇&#xff0c;让您能够更好地…

chatgpt赋能python:用Python统计奇偶数的方法

用Python统计奇偶数的方法 Python作为一种广泛应用于数据分析和科学计算的编程语言&#xff0c;具有许多内置函数和库&#xff0c;可以轻松地进行奇偶数的统计。这篇文章将向您展示如何使用Python统计奇偶数&#xff0c;并提供几个常见的示例。 Python奇偶数的定义 奇数是除…

ConcurrentHashMap核心源码(JDK1.8)

一、ConcurrentHashMap的前置知识扫盲 ConcurrentHashMap的存储结构&#xff1f; 数组 链表 红黑树 二、ConcurrentHashMap的DCL操作 HashMap线程不安全&#xff0c;在并发情况下&#xff0c;或者多个线程同时操作时&#xff0c;肯定要使用ConcurrentHashMap 无论是HashM…

Ceph分布式存储 原理+架构图详解

存储基础 单机存储设备 ●DAS&#xff08;直接附加存储&#xff0c;是直接接到计算机的主板总线上去的存储&#xff09; IDE、SATA、SCSI、SAS、USB 接口的磁盘 所谓接口就是一种存储设备驱动下的磁盘设备&#xff0c;提供块级别的存储 ●NAS&#xff08;网络附加存储&#x…

2、MySQL数据库基础

目录 MySQL 连接查询 表 约束 存储引擎 事务 索引 视图&#xff08;View&#xff09; 数据库的导入导出&#xff08;DBA命令&#xff09; 数据库设计三范式 MySQL sql、DB、DBMS分别是什么&#xff1f;它们之间的关系&#xff1f; DB&#xff1a; DataBase&#xff0…

软考A计划-电子商务设计师-系统开发项目管理

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

华为OD机试真题 Java 实现【最小传输时延】【2023 B卷 100分】,附详细解题思路

一、题目描述 某通信网络中有N个网络节点&#xff0c;用1到N进行标识。 网络通过一个有向无环图表示&#xff0c;其中图的边的值表示结点之间的消息传递时延。 现给定相连节点之间的时延列表times[i] {u,v,w}&#xff0c;u表示源节点&#xff0c;v表示目的节点&#xff0c;…

每日一博 - Server-Sent Events推送技术

文章目录 概述SSE VS WS一、实现方式二、应用场景三、性能方面四、小结结 Code在Spring Boot中使用SSE测试总结 概述 SSE&#xff08;Server-Sent Events&#xff09;是一种基于HTTP的服务器推送技术&#xff0c;它允许服务器实时地向客户端推送数据。相比于传统的轮询或长轮询…

计算机网络|第六章:链路层和局域网

目录 &#x1f4da;链路层概述 &#x1f407;链路层提供的服务 &#x1f407;链路层在何处实现 &#x1f4da;差错检测和纠正技术 &#x1f407;奇偶校验 &#x1f407;检验和方法 &#x1f407;循环冗余检测⭐️ &#x1f4da;多路访问链路和协议 &#x1f407;信道划…