- 浏览: 103136 次
- 性别:
- 来自: 北京
最新评论
因为在看编程珠玑 第一章讲到了 用BitSet来对N多数字进行排序
java中无疑提供了 bitSet 看了看源码 又找了找文章 了解了一些,此外暴漏了自己的基础知识不牢靠 对基本类型byte int long的认识不足 以及对位操作的差劲!!!!
BitSet
java.util 包下面, jdk实现是通过 long数组来存储的
private long[] words;
因此最小的BitSet也有64位,如果感觉浪费 可以考虑自己实现一个BitSet。此外,BitSet可以自己增长,但是注意的是BitSet都是64的倍数。 size() 方法返回的也是64的倍数。
个人感觉BitSet 的应用场合是 对空间要求比较的严格,并且数字很多,而且数字各异,BitSet提供了很多方法,例如 与,或等位操作。
http://www.cnitblog.com/weiweibbs/archive/2008/09/11/49009.html
此外应该会进行BitSet的操作
void set(int i) { a[i>>SHIFT] |= (1<<(i & MASK)); }
void clr(int i) { a[i>>SHIFT] &=~(1<<(i & MASK)); }
int test(int i) { return a[a>>SHIFT] & (i & MASK); }
这几个方法是 《编程珠玑》上的 表示方法 其实 对于long数组来说 SHIFT应该是6
MASK 0xffffffffffffffffL
对应java.util.BitSet来说 应该是 set(int) clear(int) get(int)不过这个get方法返回的是boolean
---------------------------------------------------------------------------------------------------------
此外, byte short int long 。 byte 8位: -128----127;short 16位: -pow(2,16) --- pow(2,16)-1;
int 32位: -pow(2,32) --- pow(2,32)-1; long 64位 -pow(2,64) --- pow(2,64)-1。
而Double 是浮点数表示了 2-1074 ---- (2-2-52)·21023.
char作为16位无符号整形 其范围为 0 -- 2的15次方 这无可争议 http://www.sunxin.org/article/445.html
-----------------------------------------------
http://developer.51cto.com/art/200804/69978.htm 位操作 应该给予重视 都忘了。。。
1+(33>>5) 注意 +的优先级 大于 >>的
发表评论
-
hibernate中htm.xml注意的一个问题
2011-06-08 12:00 879遇到了这个问题 总是报 org.hibernate ... -
罗马数字转成阿拉伯数字
2011-06-02 13:15 2615首先得知道罗马数字是怎么回事: http://520920. ... -
有关于验证码的
2011-06-01 13:00 634验证码 是怎么出来的呢 应该有很多种方式,今天看到了一段代码中 ... -
转系统架构的一片文章
2011-05-13 14:27 718原文其实应该是.NET上面的 但是我觉得架构上同样适用 ... -
java中从汉字得到拼音的函数【转载】
2011-05-11 10:17 889public class GB2Alpha { ... -
后缀树 后缀数组 字符串的 那些面试题... 【烂,别点进来】
2011-04-24 16:28 1579最近在总结点面试题,好像放在公司里,忘记拷到U盘上了。回去传到 ... -
海量数据的匹配 bloom filter 【别进来 很烂】
2011-04-22 10:30 1014引出 是老张说的腾讯的面试题 说 昨天有一亿个QQ登陆 ... -
Hello mina 【别进来 烂 会后悔】
2011-04-18 17:46 758mina nio 开源代码 以上是关键字 感觉 ... -
java nio & reactor
2011-04-15 14:26 846想看 java io很久了 菜的很 两个文章和一本书 小了解一 ... -
vm到jsp
2011-02-14 14:54 2114http://www.iteye.com/topic/1355 ... -
json&jsonP&跨域
2011-01-10 15:58 775http://www.ibm.com/developerwor ... -
PermGen space
2010-12-14 11:59 714http://blog.csdn.net/Jerry_R ... -
编程珠玑课后题,吝啬的初始化
2010-12-05 16:20 1041在这里,我们有一个稀疏的数组需要访问,并且在第一次访问的时 ... -
JVM 小总结
2010-11-25 14:22 651http://www.iteye.com/topic/8218 ... -
jdk5.0 6.0新特性
2010-11-25 08:18 565也许会被蛋疼的人问道吧 http://qwzhl100 ... -
对象的复制:ezmorph
2010-11-17 10:59 733ezmoph组件 http://blog.csdn.net/ ... -
how tomcat works
2010-11-16 17:36 976http://jarfield.iteye.com/blog/ ... -
ThreadLocal
2010-11-14 22:05 772起因还是那天培训 对这个了解不深刻 赶紧看看 ... -
ConcurrentHashMap记录
2010-11-14 21:09 835那天的讲座中 武祥提到了 ConcurrentHashMap ... -
有关海量数据
2010-11-06 16:26 803起因是看到了 小灰灰在人人上分享的文章 http://blo ...
相关推荐
8. **性能优化**:自定义`bitset`可能包含一些针对特定场景的优化,比如位操作的流水线处理,或者使用SIMD(单指令多数据)指令来加速位操作。 `main.cpp`可能是测试这些功能的主程序,通过创建`bitset`对象,执行...
Java中BitSet类是Java集合框架的一部分,它是一种用于处理位操作的高级数据结构。BitSet可以看作是一个只存储布尔值的数组,但相比于原始的布尔数组,BitSet更加内存高效,因为它以64位的块(word)来存储多个布尔值...
- **位操作**:库提供了一系列API,如`set(i)`设置第i位为1,`clear(i)`清除第i位,`flip(i)`翻转第i位,`get(i)`获取第i位的值。 - **位运算**:支持并(`or()`)、交(`and()`)、差(`xor()`)和非(`not()`)...
BitSet 的底层实现是使用 long 数组作为内部存储结构的,所以 BitSet 的大小为 long 类型大小(64 位)的整数倍。它有两个构造函数:BitSet() 和 BitSet(int nbits)。BitSet() 创建一个新的位 Set,默认大小是 64 位...
接着,我们使用位操作函数来设置或清除相应的位,表示文件的分配和释放状态。 例如,以下是一个简化的示例代码片段,演示如何在VC6.0中使用位视图分配和释放空间: ```cpp #include #include // 定义位视图大小...
`BitSet`是一个动态增长的位向量,支持基本的位操作,如设置、清除和测试位。以下是一个简单的示例,展示如何创建和使用位示图: ```java import java.util.BitSet; public class Bitmap { private BitSet ...
位操作在计算机科学和编程中起着至关重要的作用,因为它们是计算机硬件处理数据的基本方式。位(bit)是信息的最小单位,一个二进制数,可以是0或1。通过对位进行操作,我们可以高效地处理内存、执行计算和实现各种...
位示图的工作原理是,假设磁盘被划分为固定大小的存储单元(例如512字节的扇区),然后创建一个与这些存储单元数量相等的位数组。在这个位数组中,每一位对应磁盘上的一个存储单元,如果该存储单元未被分配,则位为0...
2. **位操作优化**: 使用C++标准库提供的`std::bitset`或位操作符进行高效位操作。 3. **效率考虑**: SHA512算法计算密集,尽量使用编译器优化选项提高运行速度。 4. **错误处理**: 考虑输入数据的有效性和边界情况...
VC++提供了一些内置的库函数和类型,如`std::bitset`和`std::stringstream`,可以帮助程序员实现这些转换。 在“新建 文本文档 (3).txt”这个文件名中,尽管我们无法看到具体的文件内容,但通常源代码会被保存在...
同时,需要注意位操作的正确性和效率,因为DES算法涉及到大量的位移和位操作。 标签中的“c++_加密解密”表明这是C++编程领域的知识,而“des解密”特别提到了DES算法的解密部分。这个项目可能包含了如何在C++环境...
例如,你可以通过设置或清除某一位来改变一个布尔状态,或者在进行位与(&)、位或(|)、位异或(^)等位运算时,逐位操作二进制数。 在实际应用中,这种工具可以帮助程序员快速验证逻辑,也可以教育初学者理解...
操作系统课程设计的目标是模拟一个...此外,可以使用bitset库来处理位示图,简化对磁盘空间的管理,通过数组索引来代替直接操作内存地址。在分配和释放盘块时,不仅要更新位示图,还要在FAT中记录文件数据的盘块序列。
- `count()`和`size()`:这两个函数返回`size_t`类型的值,表示位集的大小或设置位的数量。`size_t`定义在`<cstddef>`头文件中。 3. MFC(Microsoft Foundation Classes)编程原理 - 应用程序实例标识:在W32 SDK...
`bitset`是STL中的位集类,它允许我们高效地处理位操作。在计算机科学中,位操作对于处理二进制数据、内存管理等场景非常关键。`bitset`提供了如设置、清除、测试单个位以及与、或、异或等位运算的方法。 `deque`...
在计算机科学中,位操作是底层计算的关键部分,特别是在内存有限或者需要高度优化性能的场合。`ocaml-bitpath` 提供了一个强大的接口来创建、操作和分析位字符串,使得开发者能够以更直观和方便的方式处理这些二进制...
海量数据去重排序bitmap(位图法)在java中实现的两种...位图法是一种高效的解决海量数据去重排序问题的方法,Java中提供了多种实现方式,例如使用BitSet类或基本类型数组。选择合适的实现方式取决于具体的需求和场景。
这样做的好处是,两个补码表示的数相加,无论它们是正还是负,都可以通过简单的位操作完成,而无需额外的逻辑判断。 二进制加法在补码表示下依然遵循基本的算术规则,例如: ``` 0101 (5) + 1011 (-3) ------- ...