最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c++中bitset的常見用法示例詳解

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

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

1. 聲明與初始化

  • 頭文件:需包含 <bitset>。
  • 聲明bitset<N> 表示一個包含 N 位的二進(jìn)制集合(N 為編譯時常量)。
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ù)初始化:高位截斷,低位對齊。
bitset<3> b(10);    // 10的二進(jìn)制為1010 → 截斷為010(值為2)
  • 字符串初始化
    • 字符串只能包含 '0' 和 '1'。
    • 默認(rèn)從字符串的 左端(高位) 開始解析。
bitset<4> b("1010"); // 高位 → 低位:1 0 1 0 → 十進(jìn)制10
bitset<4> b("101010", 2, 4); // 從索引2取4位:"1010" → 值為10

3. 常用操作

  • 位訪問

    • [] 運算符:通過索引訪問(從右到左,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)計與判斷

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

4. 位運算

  • 支持 &、|、^、~<<、>> 等運算符(長度需相同):
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)為無符號整數(shù)(可能溢出)。
  • to_string():轉(zhuǎn)為字符串,可指定填充字符。
bitset<4> b(10);
string s = b.to_string(); // "1010"

6. 應(yīng)用場景

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

示例代碼

#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;
}

注意事項

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

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

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

相關(guān)文章

  • C++中std::vector的具體使用

    C++中std::vector的具體使用

    C++標(biāo)準(zhǔn)庫中的std::vector是一種動態(tài)數(shù)組容器,適用于算法競賽中的動態(tài)數(shù)據(jù)存儲、數(shù)組擴(kuò)展和模擬棧/二維數(shù)組等場景,本文就來介紹一下,感興趣的可以了解一下
    2025-02-02
  • C語言遞歸函數(shù)與漢諾塔問題簡明理解

    C語言遞歸函數(shù)與漢諾塔問題簡明理解

    遞歸(recursive)函數(shù)是“自己調(diào)用自己”的函數(shù),無論是采用直接或間接調(diào)用方式。間接遞歸意味著函數(shù)調(diào)用另一個函數(shù)(然后可能又調(diào)用第三個函數(shù)等),最后又調(diào)用第一個函數(shù)。因為函數(shù)不可以一直不停地調(diào)用自己,所以遞歸函數(shù)一定具備結(jié)束條件
    2022-07-07
  • C語言實現(xiàn)簡單彈球游戲

    C語言實現(xiàn)簡單彈球游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)簡單彈球游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C語言實現(xiàn)的bitmap位圖代碼分享

    C語言實現(xiàn)的bitmap位圖代碼分享

    這篇文章主要介紹了C語言實現(xiàn)的bitmap位圖代碼分享,位圖(bitmap)是一種非常常用的結(jié)構(gòu),在索引、數(shù)據(jù)壓縮等方面有廣泛應(yīng)用,需要的朋友可以參考下
    2014-08-08
  • Qt實現(xiàn)文件的壓縮和解壓縮操作

    Qt實現(xiàn)文件的壓縮和解壓縮操作

    這篇文章主要為大家詳細(xì)介紹了如何使用Qt庫中的QZipReader和QZipWriter實現(xiàn)文件的壓縮和解壓縮功能,文中的示例代碼簡潔易懂,需要的可以參考一下
    2024-12-12
  • C++高精度計時的幾種方法總結(jié)(測試函數(shù)運行時間)

    C++高精度計時的幾種方法總結(jié)(測試函數(shù)運行時間)

    本文介紹了C++中常用的幾種程序計時方法,包括clock()函數(shù)、GetTickCount()、QueryPerformanceCounter()以及C++11中的chrono庫函數(shù),這篇文章主要介紹了C++高精度計時的幾種方法,需要的朋友可以參考下
    2024-09-09
  • C語言中_string.h庫函數(shù)功能及其用法詳解

    C語言中_string.h庫函數(shù)功能及其用法詳解

    在計算機(jī)編程中,字符串處理是一項常見而重要的任務(wù),C語言的string.h頭文件提供了一系列函數(shù)和工具,用于對字符串進(jìn)行操作和處理,本文將對string.h頭文件中的所有函數(shù)進(jìn)行全面介紹,包括它們的功能和使用方法,以幫助大家更好地理解和利用該頭文件
    2023-12-12
  • 用C語言舉例講解數(shù)據(jù)結(jié)構(gòu)中的算法復(fù)雜度結(jié)與順序表

    用C語言舉例講解數(shù)據(jù)結(jié)構(gòu)中的算法復(fù)雜度結(jié)與順序表

    這篇文章主要介紹了講解數(shù)據(jù)結(jié)構(gòu)中的算法復(fù)雜度結(jié)與順序表的C語言版示例,包括對時間復(fù)雜度和空間復(fù)雜度等概念的簡單講解,需要的朋友可以參考下
    2016-02-02
  • C++ vector數(shù)組用法及解析

    C++ vector數(shù)組用法及解析

    這篇文章主要給大家分享的是C++ vector數(shù)組用法及解析,什么是什么是vector數(shù)組呢?下面文章將對打家做詳細(xì)介紹,感興趣的小伙伴可以參考一下
    2021-10-10
  • OpenCV圖像文件批量讀取編程實例

    OpenCV圖像文件批量讀取編程實例

    這篇文章主要為大家詳細(xì)介紹了OpenCV圖像文件批量讀取編程實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評論

扎兰屯市| 永城市| 乐陵市| 阿拉尔市| 腾冲县| 乡宁县| 旌德县| 桂阳县| 工布江达县| 凤台县| 缙云县| 新野县| 安图县| 青海省| 绵阳市| 雷州市| 青田县| 介休市| 札达县| 监利县| 永康市| 印江| 阆中市| 广昌县| 张家口市| 衡山县| 河曲县| 北流市| 武隆县| 云林县| 东城区| 北票市| 溧水县| 祁东县| 鹤庆县| 柳林县| 鄂托克前旗| 雷山县| 昂仁县| 贵定县| 永川市|