有没有办法使用布尔在c++中作为一个位图
Is there way to use a boolean in C++ as a bitmap?
是否有办法在c++中使用布尔值作为位图?
代码示例:
bool boolean = false;
boolean &= ~(1 << 0);
boolean |= 1 << 2;
boolean |= 1 << 1;
cout << "boolean : " << boolean << endl;
bool bit1 = boolean & (1 << 2);
bool bit2 = boolean & (1 << 1);
bool bit3 = boolean & (1 << 0);
cout << "bit1 : " << bit1 << endl;
cout << "bit2 : " << bit2 << endl;
cout << "bit3 : " << bit3 << endl;
输出:
boolean : 1
bit1 : 0
bit2 : 0
bit3 : 1
你可能在考虑像std::bitset
这样的东西吗?
更新bitset是一个特殊的容器类,用于存储位(只有两个可能值的元素:0或1,
true
或false
,…)。这个类与常规数组非常相似,但是对空间分配进行了优化:每个元素只占用一个比特(比c++:
char
中最小元素类型少8倍)。每个元素(每个位)都可以单独访问:例如,对于给定的bitset
mybitset
,表达式mybitset[3]
访问它的第四个位,就像普通数组访问它的元素一样。
在您的代码示例中,您正在使用(或滥用)布尔实例实际上表示为至少1字节的整型值,因此大小为8位(标准可能更精确地定义了这一点)。
因此,在实践中,您可以在bool
值中进行位翻转,但我打赌结果是未定义的。即使没有,它也是非常不寻常的,因此很难被其他人理解和维护。因此,您最好使用标准的int
s。
相关文章:
- C / C++ 移位/偏移/向左或向右移动位图?
- 如何在快板的屏幕中显示子位图的绘制?
- CreateDIBSection为同一图像返回不一致的位图位值
- C++ 位图中的 ttc 字体
- 使用 GDI+ 旋转位图,然后转换为 HDC
- 难以从 CImageList 设置菜单项位图
- 如何将位图拉伸到父面板(wxWidgets 自定义)
- 如何使用 freetype2 访问单色位图中的像素状态
- 将位图 (bmp) 转换为具有透明度的 png (Windows c++)
- 安卓工作室 |CPP 文件错误错误: 位图库中对"AndroidBitmap_unlockPixels"的未定义引用
- 位图到垫子/2D 数组
- Gdiplus位图没有Alpha通道
- 如何从路径字符串加载Gdiplus::位图
- 在C++中使用Gdiplus创建透明位图
- 用C++压缩内存中的位图
- 另一个从剪贴板线程绘制位图
- 将两个Gdiplus::位图合并为一个c++
- 如何读取一个大的位图图像的大小
- 我如何使用一个屏幕外的DC渲染位图的编译一次
- 在JNI中创建一个带有像素数据的新位图