美文网首页
1.位运算符-Bit

1.位运算符-Bit

作者: celusing | 来源:发表于2020-10-31 10:16 被阅读0次

    前言:位运算符的使用方式有两种。1)基础使用方式;2)c++新增bitset类
    1.基础使用
    1)位运算符


    位运算符.png

    备注:
    1.一般来说,如果运算对象是“小整型”,则会首先自动提升成较大的整型,然后做位运算;
    2.位运算支持有符合和无符号整数,但是针对符号位的处理依赖于机器。故:强烈建议仅将位运算用于处理无符号整数类型。
    3.移位运算符:
    1)移除边界之外的位会被舍弃;
    2)不足的位:会进行补0.

    2.bitset类型
    c++标准库定义了bitset类,使得位运算使用更容易。

    include<bister>

    using std::bitset;
    1)定义和初始化
    bitset<n> b; //b有n位,每位都为0;
    bitset<n> b(u); //b是unsigned long型u的副本
    bitset<n> b(s); //b是string对象s中含有n位字符串的副本
    bitset<n> b(s, pos, n); //b是s中从pos位置开始的n个位置的副本
    bitset<n> b(s,pos); //b从s的pos位置开始取值到s末尾(注取的值从b的右端开始)
    注:①n定义的位数在初始化时按初始值填充,赋值超出的范围舍去,空余的以零填充.
    ②bitset从string对象读入位集时按从右到左的顺序.
    2)方法
    b.any(); //查找b是否存在1?
    b.none(); //b中不存在1吗?
    b.count(); //b中1的个数
    b.size(); //b的位数
    b[pos]; //访问b中pos处的数值
    b.test(pos); //检测b中pos处是否为1
    b.set(); //把b中所有位 置为1
    b.set(pos); //把b中pos位置为1
    b.reset(); //把b中所有位置为0
    b.reset(pos); //把b中pos位置为0
    b.flip(); //b中所有二进制位取反
    b.flip(pos); //b中在pos处的二进制位取反
    b.to_ulong; //返回一个同值得unsigned long值
    os << b; //把b中位集输出

    相关文章

      网友评论

          本文标题:1.位运算符-Bit

          本文链接:https://www.haomeiwen.com/subject/decsvktx.html