zoukankan      html  css  js  c++  java
  • 位运算 C++

    原码:是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。

    反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

    补码:正数的反码与其原码相同;负数的补码等于其源码的符号位不变,数值部分的各位取反,然后整个数加1。

    位运算:

    范围:一般适合只有两种case的情况,速度比较快

    C++

    实现1:

    #include <bitset>

    bitset< 32 > bitvec;声明了一个含有32 个位的bitset 对象位的顺序从0 到31 缺省情况下所有的位都被初始化为0
     
    bitvec.set(27);//设置第27位为1
    bitvec.reset(27);//设置第27位为0
    status = bitvec[27];//查询第27位结果
     
    实现2:
     
    也可以自己使用  unsighed long int_bit = 0;//初始化为0
     
     设置第27位为1:
     int_bit |= 1UL<<27;
    等价于  int_bit = int_bit | 1UL<<27;
     
     设置第27位为0:
     int_bit &= ~(1UL<<27);
    等价于  int_bit = int_bit &  ~(1UL<<27);
     
    status = int_bit &  (1UL<<27);//查询第27位结果
     
     
     
     
     
     
  • 相关阅读:
    7-36 复数四则运算
    7-35 有理数均值
    7-34 通讯录的录入与显示
    7-33 有理数加法
    7-32 说反话-加强版
    POJ-2524-Ubiquitous Religions
    POJ-2406-Power Strings
    HDU-1072-Nightmares
    POJ-1961-Period(ZOJ-2177)
    POJ-1961-Period(ZOJ-2177)
  • 原文地址:https://www.cnblogs.com/liujin2012/p/2965852.html
Copyright © 2011-2022 走看看