アプリケーション開発ポータルサイト
ServerNote.NET
カテゴリー【C/C++
【C++】std::bitsetでデータを2進数形式で表示し任意のビットがONかも調べる
POSTED BY
2023-12-08

Cではほとんど最新のバージョンでしか2進数をサポートしていないが、C++のstd::bitsetであれば2進数の管理ができる。

C/C++std_bitset.cppGitHub Source
#include <stdio.h>
#include <stdint.h>
#include <iostream>
#include <string>
#include <bitset>

int main(void) {
    uint32_t val1 = 255;
    uint32_t val2 = 0xffffffff;
    uint32_t val3 = 0x183061c1;

    std::bitset<32> bit1 = std::bitset<32>(val1);
    std::bitset<32> bit2 = std::bitset<32>(val2);
    std::bitset<32> bit3 = std::bitset<32>(val3);
    
  std::cout << bit1.to_string() << std::endl;
    std::cout << bit2.to_string() << std::endl;
    std::cout << bit3.to_string() << std::endl;

    std::cout << "bit1[7] is " << bit1.test(7) << std::endl;
    std::cout << "bit1[8] is " << bit1.test(8) << std::endl;

  return 0;
}

コンパイル、実行結果

g++ std_bitset.cpp
./a.out

00000000000000000000000011111111
11111111111111111111111111111111
00011000001100000110000111000001
bit1[7] is 1
bit1[8] is 0

32ビットのuint変数に10進や16進で好きな値をセットし、std::bitsetクラスを生成して代入する。to_string関数で2進数文字列を取得できるので視認できる。

また、test関数で、任意のビット番目(0ビット目から開始)が1か0かどうかを返してくれるので、フラグ管理を扱うサービスで非常に有用である。

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

【キーワード検索】