欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c++中bitset的常見(jiàn)用法示例詳解

 更新時(shí)間:2025年02月20日 08:47:25   作者:Tomorrowland_D  
C++ 中的?bitset?是一個(gè)用于處理固定大小位序列的模板類,提供高效的位操作功能,這篇文章主要介紹了c++中bitset的常見(jiàn)用法,需要的朋友可以參考下

C++ 中的 bitset 是一個(gè)用于處理固定大小位序列的模板類,提供高效的位操作功能。以下是對(duì)其關(guān)鍵特性的詳細(xì)介紹:

1. 聲明與初始化

  • 頭文件:需包含 <bitset>。
  • 聲明bitset<N> 表示一個(gè)包含 N 位的二進(jìn)制集合(N 為編譯時(shí)常量)。
bitset<8> b1;       // 默認(rèn)初始化,所有位為0
bitset<4> b2(5);    // 用整數(shù)初始化:0101
bitset<4> b3("1010"); // 用字符串初始化:1010
bitset<4> b4(b3);   // 拷貝構(gòu)造

2. 初始化規(guī)則

  • 整數(shù)初始化:高位截?cái)啵臀粚?duì)齊。
bitset<3> b(10);    // 10的二進(jìn)制為1010 → 截?cái)酁?10(值為2)
  • 字符串初始化
    • 字符串只能包含 '0' 和 '1'
    • 默認(rèn)從字符串的 左端(高位) 開(kāi)始解析。
bitset<4> b("1010"); // 高位 → 低位:1 0 1 0 → 十進(jìn)制10
bitset<4> b("101010", 2, 4); // 從索引2取4位:"1010" → 值為10

3. 常用操作

  • 位訪問(wèn)

    • [] 運(yùn)算符:通過(guò)索引訪問(wèn)(從右到左,0為最低位)。
    • test(pos):檢查指定位是否為1,越界拋出異常。
bitset<4> b("1010");
bool bit0 = b[0];   // 0 → 最低位
bool bit3 = b[3];   // 1 → 最高位
  • 修改位

    • set(pos, val):設(shè)置某位(默認(rèn)1)。
    • reset(pos):清除某位(設(shè)為0)。
    • flip(pos):翻轉(zhuǎn)某位。
b.set(0);       // 1010 → 1011
b.reset(3);     // 1011 → 0011
b.flip(1);      // 0011 → 0001
  • 統(tǒng)計(jì)與判斷

    • count():返回1的個(gè)數(shù)。
    • any()/none()/all():判斷是否存在/沒(méi)有/全部為1。
if (b.any()) cout << "至少1位為1";

4. 位運(yùn)算

  • 支持 &、|^、~、<<、>> 等運(yùn)算符(長(zhǎng)度需相同):
bitset<4> a("1010"), b("1100");
auto c = a & b;     // 1000
auto d = a << 1;    // 0100

5. 類型轉(zhuǎn)換

  • to_ulong()/to_ullong():轉(zhuǎn)為無(wú)符號(hào)整數(shù)(可能溢出)。
  • to_string():轉(zhuǎn)為字符串,可指定填充字符。
bitset<4> b(10);
string s = b.to_string(); // "1010"

6. 應(yīng)用場(chǎng)景

  • 位標(biāo)志管理:如權(quán)限控制、狀態(tài)標(biāo)記。
  • 位掩碼操作:快速篩選或修改特定位。
  • 數(shù)據(jù)壓縮:高效存儲(chǔ)布爾值。

示例代碼

#include <bitset>
#include <iostream>
using namespace std;
int main() {
    bitset<8> b1(42);          // 00101010
    bitset<8> b2("10101010");  // 10101010
    cout << b1 << endl;         // 輸出 00101010
    b1.set(0);                 // 變?yōu)?00101011
    b2.flip();                 // 變?yōu)?01010101
    cout << (b1 & b2) << endl; // 00000001
    cout << b1.to_ulong() << endl; // 43
    return 0;
}

注意事項(xiàng)

  • 越界訪問(wèn)test(pos) 會(huì)檢查越界,[] 不會(huì)。
  • 性能:位操作高效,適合密集運(yùn)算。
  • 字符串順序:字符串的第一個(gè)字符對(duì)應(yīng)高位。

bitset 是處理二進(jìn)制數(shù)據(jù)的利器,結(jié)合明確的位序規(guī)則和豐富的接口,可顯著簡(jiǎn)化位級(jí)操作代碼。

到此這篇關(guān)于c++中bitset的常見(jiàn)用法的文章就介紹到這了,更多相關(guān)c++ bitset用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于C++讀入數(shù)字按位取出與進(jìn)制轉(zhuǎn)換問(wèn)題(典型問(wèn)題)

    關(guān)于C++讀入數(shù)字按位取出與進(jìn)制轉(zhuǎn)換問(wèn)題(典型問(wèn)題)

    這篇文章主要介紹了關(guān)于C++讀入數(shù)字按位取出與進(jìn)制轉(zhuǎn)換問(wèn)題,是一個(gè)非常典型的問(wèn)題,本文通過(guò)實(shí)例舉例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2020-02-02
  • VC中BASE64編碼和解碼使用詳解

    VC中BASE64編碼和解碼使用詳解

    Base64是一種很常用的編碼方式,利用它可以將任何二進(jìn)制的字符編碼到可打印的64個(gè)字符之中, 這樣,不管是圖片,中文文本等都可以編碼成只有ASCII的純文本。
    2015-11-11
  • 深入解析int(*p)[]和int(**p)[]

    深入解析int(*p)[]和int(**p)[]

    以下是對(duì)int(*p)[]和int(**p)[]的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下
    2013-07-07
  • 如何寫(xiě)好C main函數(shù)的幾個(gè)注意事項(xiàng)

    如何寫(xiě)好C main函數(shù)的幾個(gè)注意事項(xiàng)

    這篇文章主要介紹了如何寫(xiě)好C main函數(shù)的幾個(gè)注意事項(xiàng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 字符串中找出連續(xù)最長(zhǎng)的數(shù)字字符串的實(shí)例代碼

    字符串中找出連續(xù)最長(zhǎng)的數(shù)字字符串的實(shí)例代碼

    這篇文章介紹了字符串中找出連續(xù)最長(zhǎng)的數(shù)字字符串的實(shí)例代碼,有需要的朋友可以參考一下
    2013-09-09
  • C++11-20 常量表達(dá)式的使用

    C++11-20 常量表達(dá)式的使用

    本文主要介紹了C++11-20常量表達(dá)式,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++中字符串查找操作的兩則實(shí)例分享

    C++中字符串查找操作的兩則實(shí)例分享

    這篇文章主要介紹了C++中字符串的查找操作的兩則實(shí)例分享,分別是找到第一個(gè)只出現(xiàn)一次的字符以及找出連續(xù)最長(zhǎng)的數(shù)字串的方法,需要的朋友可以參考下
    2016-02-02
  • C++實(shí)現(xiàn)幸運(yùn)大抽獎(jiǎng)(QT版)

    C++實(shí)現(xiàn)幸運(yùn)大抽獎(jiǎng)(QT版)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)幸運(yùn)大抽獎(jiǎng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C++聚合體初始化aggregate initialization詳細(xì)介紹

    C++聚合體初始化aggregate initialization詳細(xì)介紹

    這篇文章主要介紹了C++聚合體初始化aggregate initialization,C++有很多初始化對(duì)象的方法。其中之一叫做 聚合體初始化(aggregate initialization) ,這是聚合體專有的一種初始化方法
    2023-02-02
  • C++中的整型

    C++中的整型

    這篇文章我們來(lái)聊聊C++中的整型,整型即整數(shù),與小數(shù)對(duì)應(yīng)。許多語(yǔ)言只能表示一種整型(如Python),而在C++當(dāng)中根據(jù)整數(shù)的范圍提供了好幾種不同的整型,下面文章我們就來(lái)看看具體是哪幾種,需要的朋友也可以參考一下
    2021-11-11

最新評(píng)論