STL:位图与位运算

先讲讲位运算:

位运算,说穿了,就是直接对整数在内存中的二进制位进行操作计算。

优点:效率高

缺点:复杂

巧妙使用位运算,有时可以有非常奇妙的结果。

常见位运算:

位与, 计算符号 & ,0&0=0;  0&1=0;   1&0=0;    1&1=1;

位或,计算符号 | , 0|0=0;  0|1=1;  1|0=1;   1|1=1;

位异或,计算符号 ^ , 0^0=0;  0^1=1;  1^0=1;   1^1=0;

位取反,~ , 

左移运算符, << ,右边默认补0 。

右移运算符, >> ,右边丢弃,左边正数补0,负数补1 。

一些高阶位运算:

取末三位, x and 7

取末k位, x and ((1 << k) - 1 )

MB转换成Bytes, x << 20


32位正整数二进制中1的个数计算:


位图,bitset

使用方式:#include <bitset>

介绍:bitset就像一个bool类型的数组,每个元素只占1bit,每个元素都可以被单独访问。bitset在编译时就需要确定大小。

bitset会默认都初始化为0 。




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值