`
m635674608
  • 浏览: 4934866 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

一个简单的 BitSet

    博客分类:
  • java
 
阅读更多
public class BitSet {

    
    
    /*private final static int BITS_PER_WORD = 1 << ADDRESS_BITS_PER_WORD;

    public BitSet() {
        initWords(BITS_PER_WORD);
    }

    public BitSet(int nbits) {
        initWords(nbits);
    }

    private void initWords(int nbits) {
        a = new long[wordIndex(nbits - 1) + 1];
    }*/
    private static long[] a =new long[640];
    private final static int ADDRESS_BITS_PER_WORD = 6;
    public static void main(String[] args) {
        //test();
      /* System.out.println(wordIndex(63));
       System.out.println(wordIndex(64));
       System.out.println(wordIndex(127));
       System.out.println(wordIndex(128));
       
       System.out.println("---------------");
       
       System.out.println(63 / 64);
       System.out.println(64 /64);
       System.out.println(127 / 64);
       System.out.println(128 / 64); */
       
        BitSet bitSet = new BitSet();
        bitSet.set(4);
       // bitSet.clear(4);
       System.out.println(bitSet.get(4));
        
    }
    
     public void clear(int bitIndex) {
         //取反后在取并
         //假如bitIndex =2  0010 取反=1101,并=0
         a[wordIndex(bitIndex)] &= ~(1L << bitIndex);
     }
    
    public static void test(){
        // BitSet
        BitSet a = new BitSet();
        a.set(1);
        
        System.out.println(a.get(1));
        System.out.println(a.get(2));

        System.out.println("---------------------");

        for (int i = 1; i < 320; i++) {
            if (i < 150) {
                a.set(i);
            }
            if (i == 150) {
                System.out.println("---150-");
            }
            System.out.println(a.get(i));
        }

        
    }

    private static int wordIndex(int bitIndex) {
        return bitIndex >> ADDRESS_BITS_PER_WORD;
    }

    public boolean get(int bitIndex) {
        //假如bitIndex=2 ; 0010 & 0010
        return ((a[wordIndex(bitIndex)] & (1L << bitIndex)) != 0);
    }

    public void set(int bit) {
        a[wordIndex(bit)] |= (1L << bit);
        /*
         * //0000 |= 0010 a[0] |= (1 << 1);
         * System.out.println(a[0]);
         * //0010 |=0100 a[0] |= (1 << 2);
         * System.out.println(a[0]);
         * //0010 |= 1000 a[0] |= (1 << 3);
         *  System.out.println(a[0]);
         */
    }

}

 

分享到:
评论

相关推荐

    C++下bitset简介

    C++下的bitset,强大而简单的位运算功能,象使用数组一样对位进行操作

    C++标准库bitset类型的简单使用方法介绍

    std::bitset是STL的一部分,准确地说,std::bitset是一个模板类,它的模板参数不是类型,而整形的数值(这一特性是ISO C++2003的新特性),有了它我们可以像使用数组一样使用位。 #include using std::bitset; 一句...

    简单谈谈C++ 头文件系列之(bitset)

    我们要使用bitset,首先需要包含头文件bitset。和vector对象不一样的是bitset类型对象的区别仅在其长度而不在其类型。在定义bitset的时候,要明确bitset包含了多少位,须在尖括号内给出它的长度值。长度值必须定义为...

    C++ bitset的简单使用示例

    bitset 一般代替 bool 数组使用,常用于优化空间,因为 bitset 中一个元素只占 1 bit。 bitset 的大小在定义使就需要确定。如果想要不定长的 bitset,就需要使用 vector。 bitset 的定义: bitset&lt;16&gt; bt; // 定义...

    javabitset源码-simple-php-github-toc:一个简单的脚本来创建githubtoc

    java bitset 源码 simple-php-github-toc A simple script to create github toc 生成 Github Readme 文件 TOC 目录 的简单脚本 Usage - 用法 $ wget ...

    简单的线性反馈移位寄存器(LFSR)C语言实现

    (2)加密过程:生成31位序列后,读取待加密文本的每一个字符,和0XFF相与得到8位01串,依次与31位序列按位异或,结果得到8位01串,得到密文,写入ciphertext.txt。 (3)解密过程:每次读入ciphertext.txt中的8个...

    布隆过滤器之C++实现

    C++实现的布隆过滤器,其中使用到的bitset也是自己简单实现的一个BitContainer。可以处理千万条到亿条记录的存在性判断。做成dll可以在很多场合使用,如自己写爬虫,要判断一个url是否已经访问过,判断一个单词是否...

    javabitset源码-my-jvm-demos:Java/Kotlin演示

    bitset源码 这个仓库主要放一些 Demo 示例 目录 1. Kotlin 实现 IGetInt java 接口的方法示例: public class IGetInt { String get(int i); String get(Integer i); } 2. Java 并发示例 此部分Demo基本用于实现 《》...

    NoSQL数据库Ardb.zip

    Ardb是一个新的构建在持久化Key/Value存储实现上的NoSQL DB服务实现,支持list/set/sorted set/bitset/hash/table等复杂的数据结构,以Redis协议对外提供访问接口。 Ardb的基本特性如下: 完全兼容Redis...

    hxE:一个用 Haxe 编写的简单实体系统

    脑电图一个用 Haxe 编写的简单实体系统,基于 Artemis ES: : 安装haxelib git hxE https://github.com/PDeveloper/hxE.git 限制您可以使用的组件数量是有限的,因为每个组件都需要一个唯一的位标志。 默认值为 32,...

    信息安全、密码学实现DES加密c++

    密码学的,bitset版的des加密,经过测试没问题,没有类,就是一个cpp文件,简单易读啊

    非常经典的c++ primer视频教程6-10

    1.2.2 一个使用IO库的程序 1.3 关于注释 1.4 控制结构 1.4.1 while语句 1.4.2 for语句 1.4.3 if语句 1.4.4 读入未知数目的输入 1.5 类的简介 1.5.1 Sales_item类 1.5.2 初窥成员函数 1.6 C++程序 第2章...

    Test_of_LeetCode

    swap(下一个) 190:uint32_t-&gt; bitset &lt;32&gt;-&gt;字符串-&gt; bitset &lt;32&gt;-&gt; uint32_t 200:DFS 206:反向链接列表 208:前缀特里 28:KMP字符串匹配 3:最长子串,不包含重复字符 303:unordered_map &lt;int&gt; sumDict ...

    decf:愚蠢的简单实体组件框架

    哑实体组件(框架) 这是一个“愚蠢的简单”实体组件框架。特征轻量级强类型的64位无符号int包装器为entity_t 类型为T的任何可移动T型存储的擦除存储支持附加到任何entity_t的任何T一个实例执行程序attach&lt;T&gt; / ...

    db-learning-material:MU CMU 15-721和有关数据库和分布式系统的高级主题。

    数据库和分布式系统数据库与分布式系统...读就完事了列式数据库的综述论文,87页方法化执行引擎和编译执行引擎的简单介绍skipList 特里树板蓝根B / B +树LSM树红黑树咆哮的位图位图参考BitSet写的一个很弱智的位图快取

    如何实现简单的位数组(bit array)

    在 comp.lang.c 上面看到一则不错的 FAQ,《How can I implement sets or arrays of bits?》感觉很实用,仅仅使用了几个简单的宏就实现了一个基本的位数组(bitset)。

    leetcode推箱子-my_leetcode:my_leetcode

    回溯、bitset 39 中等 回溯法 40 中等 回溯法 41 困难 哈希 42 困难 双指针、单调栈 43 中等 乘法、结果位置 44 困难 dp 45 困难 贪心 46 中等 回溯法 47 中等 回溯法 48 中等 转置+反转、找规律 50

    使Delphi 6.0 支持 Apache 2.0

    现在我们看看怎么在Delphi 6 里面实现Apache 2.0 的支持,实际上很简单,只要把Delphi 7 里面相应的文件拷入 Delphi 6 的LIB 目录就可以了,具体为以下三个文件: ApacheTwoHTTP.pas, ApacheTwoApp.pas, HTTPD2.pas,...

Global site tag (gtag.js) - Google Analytics