cout打印变量中所有位的值

来源:互联网 发布:淘宝培训学校怎么样 编辑:程序博客网 时间:2024/05/17 22:53
这不仅是更好的可读性,它可能是更高效的为好,因为它只涉及2个操作(一位或一个参数复制)。
这是一个OpenGL的原因选择使用bitflag参数代替多个布尔值。
此外,如果你有未使用的位标志,需要添加选项后,你可以只定义位标志。没有必要改变函数原型,这是很好的向后兼容性。
性病简介::bitset
所有这一切都是很累的,不是吗?幸运的是,C++标准库的功能称为std::bitset,帮助我们管理位标志。

创建一个std::bitset,你需要包括bitset的头,然后定义一个std::bitset指示变量需要多少位。位必须是编译时常量。

#include <bitset>#include <iostream> // Note that with std::bitset, our options correspond to bit numbers, not bit patternsconst int option_1 = 0;const int option_2 = 1;const int option_3 = 2;const int option_4 = 3;const int option_5 = 4;const int option_6 = 5;const int option_7 = 6;const int option_8 = 7; int main(){    std::bitset<8> bits(0x2); // we need 8 bits, start with bit pattern 0000 0010    bits.set(option_5); // set bit 4 to 1 (now we have 0001 0010)    bits.flip(option_6); // flip bit 5 (now we have 0011 0010)    bits.reset(option_6); // set bit 5 back to 0 (now we have 0001 0010)     std::cout << "Bit 4 has value: " << bits.test(option_5) << '\n';    std::cout << "Bit 5 has value: " << bits.test(option_6) << '\n';    std::cout << "All the bits: " << bits << '\n';     return 0;}

注意:发送bitset std::cout打印变量中所有位的值1。
记住,bitset对象的初始化值为二进制,而使用bitset功能位的位置!
我们建议使用std::代替做所有的位操作手动bitset,作为bitset更方便、不易出错。
(对读者的“先生”)
位掩码
位标志的原则可以扩展到打开,关闭,切换,或查询多位在一次,在一个位单操作。当我们把单独的位聚在一起,作为一个群体,这是所谓的位掩码的目的。
让我们来看看一个样本程序,使用位掩码。在下面的程序中,我们要求用户输入一个数字。然后,我们使用一个位掩码,以保持低4位,我们打印的价值。

0 0
原创粉丝点击