[C++ 学习] C++ Primer 笔记 bitset 和 位操作

来源:互联网 发布:centos7 pdo mysql 编辑:程序博客网 时间:2024/06/06 09:12

看了 c++ primer 关于位操作的章节,记录一些自己的理解.

 

 

位操作需要针对 unsigned 类型的数 进行操作.

对 负数进行位操作,会依赖机器不同而结果不同,应该避免.

 

位操作需要针对 unsigned 类型的数 进行操作,

所以能够操作的位数会受到 这个 unsigned类型的数据的 位数限制.

bitset可以操作任意多位,不收类型的 位数限制.

 

 

 

对比 bitset 和 位操作符 的几个经典的使用情况:

 

1. 初始化                // initialize as 0

bistset<30> bitset_quiz;      

unsigned long int_quiz = 0;

 

2. 置位                 // set the 27 bit as  1

biset_quiz.set(27);       

int_quiz |= 1UL << 27;

 

3.复位                // set the 27 bit as 0

int_quiz &= ~(1UL << 27);

 

4.取值                 // get the value of 27 bit

bool status;

status = bitset_quiz[27];

status = status & (1UL << 27);

 

上面的位操作例子都是书上的,看的时候觉得挺简单,

但是自己合上书写一遍,还真得稍微动动脑筋.

 

虽然书上强力推荐使用 bitset 更加简单.

但是我觉得熟练掌握 位操作的思想,应该是每个程序元所必备的.

 

记得  windows sdk 在绘制背景透明的位图的时候,就需要熟悉这个知识点.