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

看了 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 在绘制背景透明的位图的时候,就需要熟悉这个知识点.

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值