zoukankan      html  css  js  c++  java
  • 位运算应用及其注意事项

    1. 可能发生的溢出

    • 使用 64 位整数时发生的溢出。试编写代码,使其能够确认无符号的 64 位整数的位掩码(bitmask)a 的第 b 位(从右向左数)是否已经打开。

      bool isBitSet(unsigned long long a, int b) {
          return a & (1 << b) > 0; 
      }

      注意,在 C++ 中,1 会定义为有符号的 32 位整数,当 b 超过 32 时,(1<

    2. 使用位掩码实现集合及其操作

    集合的操作是位掩码的最重要的应用范围。这种应用中,N 位整数,可以拥有 0 到 N-1 个整数元素的集合。要判断某个元素 i 是否包含在集合中,只要查看 表示 2i 的位是否打开即可。

    例如,可将具有 6 个元素的集合 {1, 4, 5, 6, 7, 9} 的整数 754 表示如下:

    • 2^1+2^4+2^5+2^6+2^7+2^9 = 754

    如我们需要判断 7 这个元素是否在集合中,则可通过,(1 << 7) & 754 的结果是否大于 0 来判断。

  • 相关阅读:
    Hive的架构和工作流程
    Hive的定义及搭建
    HBase API操作
    HBase相关概念简介
    HBase shell常用命令
    HBase的简介和搭建
    scrapy useragent
    scrapy settings
    scrapy中的request对象
    python语法
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9423318.html
Copyright © 2011-2022 走看看