C++ bitset的用法实例

本文介绍了C++中bitset的使用,包括初始化、设置、清除、翻转、位运算、转换等操作,并提供了详细代码实例,强调了bitset在位运算中的优势和提升代码可读性的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++ bitset的用法实例


一、bitset

顾名思义,bitset是位bit的set集合,是可以当做容器使用的一种数据结构。
bitset提供了一些很实用的方法,能用来替代C语言的直接按位运算带来的不便。

二、代码

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

int main()
{
	std::bitset<5> bs1;			//00000,无参默认0
	std::bitset<5> bs2(4);		//00100,整数转二进制,参数可为16进制
	std::bitset<5> bs3("0011");	//00011,字符串转二进制,缺则补0,多则截断

	bs1.reset();	//00000, 全清空
	bs1.set();		//11111, 全置1

	bs1.set(0, 0);	//11110, 第0位置0
	bs1.set(0, 1);	//11111, 第0位置1

	bs1.reset(1);	//11101,第1位重置

	bs1 ^= 0b11111; //00010, 参与位运算

	bs1[0] = 1;		//00011,下标访问

	bs1.flip(0);	//00010,翻转第0位,无参表示全翻转

	bool isOne = bs1.test(0);  //false,第0位是否1
	bool isAllOne	= bs1.all(); //false,是否全为1
	bool isAnyOne	= bs1.any(); //true,是否有一位是1
	bool isAllZero = bs1.none(); //false,是否全为0

	size_t i = bs1.count();	// 1, 1的个数
	size_t s = bs1.size();	// 5, 容量

	std::string str = bs1.to_string();		//"00010",转字符串
	unsigned long l = bs1.to_ulong();		//2,转无符号long
	unsigned long long ll = bs1.to_ullong();//2,转无符号long long

    return 0;
}



三、总结

使用bitset来替代直接的位运算或辅助位运算,能增强可阅读性,减少疏忽带来的影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值