- 浏览: 278553 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (161)
- 【**计划】 (2)
- 【**Core Java**】 (30)
- 【**JAVA EE】 (6)
- JDBC (3)
- Hibernate专题系列 (0)
- 【**OS】 (14)
- 【**架构设计/设计模式】 (11)
- 【Hadoop】 (3)
- 【**分布式】 (9)
- 模板 (1)
- C (2)
- 常用工具 (1)
- Oracle (2)
- 【Tips】 (3)
- 【数据库】 (2)
- 玩转Ubuntu (0)
- 【计算机网络/网络编程】 (7)
- 【**Search Engine】 (21)
- 【**专题**】 (6)
- 【**Python】 (10)
- XML (1)
- 【**Open Source Framework】 (1)
- 【高级主题】 (1)
- 【存储】 (3)
- 【笔试面试】 (2)
- 【**数据结构与算法设计】 (20)
- 【其他】 (3)
- 【编程练习】 (2)
- 【待完成】 (12)
- 【工作】 (6)
- 【软件研发】 (4)
- 【**多线程多进程编程】 (5)
- 【Web Service】 (1)
- 【表达式解析/JavaCC系列】 (5)
- 【缓存系统:Memcached】 (1)
- 【Java IO/NIO】 (5)
- 【JVM运行机制及内存管理】 (7)
最新评论
-
107x:
...
python list排序 -
yuzhu223:
...
【Python基础】Python的lambda函数与排序 -
Tonyguxu:
分析查询结果的打分小于11.query=1065800715* ...
lucene打分机制的研究 -
Tonyguxu:
query=139320661963.013709 = (MA ...
lucene打分机制的研究 -
Tonyguxu:
query=10658007150.6772446 = (MA ...
lucene打分机制的研究
注:学习了《编程珠矶》第一章,将涉及的一些知识点整理如下
value-->index 将某个数转化为位图的索引,如要表示value=2,即将位图index=2上的value赋为1(00100000.。。)
位图数据结构
~位反
<< 位左移
>> 位右移
& 位与 : 同为1(真)为1
| 位或 :只要有一个为1(真)则为1
^ 位异或 :1 和 0为1
0,1 | 1 = 1,1 ==> 或1,都成1
0,1 | 0 = 0,1
0,1 & 1 = 0,1
0,1 & 0 = 0,0 ==> 与0,都成0
0,1 ^ 1 = 1,0 ==> 异或1,变反
0,1 ^ 0 = 0,1
掩码
掩码在计算机学科及数字逻辑中指的是一串二进制数字,通过与目标数字的按位操作,达到屏蔽指定位而实现需求。
示例:创造一个掩码msk把一个指令cmd的第0~3位(右边第一位为0位)清零:
指令 cmd = 0110011011
创造掩码 msk = 0000001111
用掩码的反码~msk和指令cmd做按位与运算 cmd & ~msk = 0110011011 & 1111110000 = 0110010000则指定的第0~3位已被清零。
示例:创造一个掩码msk把一个指令cmd的第0~3位(右边第一位为0位)清零:
指令 cmd = 0110011011
创造掩码 msk = 0000001111
用掩码的反码~msk和指令cmd做按位与运算 cmd & ~msk = 0110011011 & 1111110000 = 0110010000则指定的第0~3位已被清零。
#define BITS_PER_BYTE 8 #define BITS_PER_INT (BITS_PER_BYTE * 4) // set the bit of the int specified by index to 1. // the index is zero-based, counting from the left(the higher end) inline void pearl_int_set(int* data, int index) { int mask = 1 << (BITS_PER_INT - 1 - index); *data |= mask; } // test whether a bit of the int specified by index is 1. // the index is zero-based, counting from the left(the higher end) inline int pearl_int_test(int* data, int index) { int mask = 1 << (BITS_PER_INT - 1 - index); return (*data) & mask; } // set a bit of the int specified by bit_index to 0. // the index is zero-based, counting from the left(the higher end) inline void pearl_int_clear(int *data, int bit_index) { int mask = ~(1 << (BITS_PER_INT - 1 - bit_index)); *data &= mask; } // get the right(lower) part of the int. inline int pearl_int_right(int *data, int count) { int mask = 1; while(count > 0) { mask = mask << 1 + 1; } return *data & mask; } // get the left(upper) part of the int value inline int pearl_int_left(int *data, int count) { int mask = 1; count = BITS_PER_BYTE - count; while (count > 0) { mask = mask << 1 + 1; } mask = ~mask; return *data & mask; } // set a bit of the speicified memory area to 1. // @warning this function does NOT perform error checking. inline void pearl_set(int *bitplane, int index) { int offset = index / BITS_PER_INT; int pos = index - offset * BITS_PER_INT; pearl_int_set(bitplane + offset, pos); } // set a bit of the specified memory area to 0. // @warning this function does NOT perform error checking. inline void pearl_clear(int *bitplane, int index) { int offset = index / BITS_PER_INT; int pos = index - offset * BITS_PER_INT; pearl_int_clear(bitplane + offset, pos); } // test if a bit of the specified memory area is 1. // @warning this function does NOT perform error checking. inline int pearl_test(int *bitplane, int index) { int offset = index / BITS_PER_INT; int pos = index - offset * BITS_PER_INT; return pearl_int_test(bitplane + offset, pos); }
如果待排序数据都在内存中
发表评论
-
LRU算法介绍
2012-06-05 22:30 3750问题背景 在操作系统的内存管理里,如何节省有限的内存并为尽可 ... -
数据结构之位图bitmap
2012-05-10 23:12 0http://dongxicheng.org/structur ... -
常见数据结构与算法汇总
2012-05-10 23:01 11081、常见数据结构 线性:数组,链表,队列, ... -
数据结构之位图
2012-05-10 18:34 5664介绍 (20120511)位图就是通过将数组下标与应用中 ... -
CRC循环校验
2012-05-10 15:11 1370http://www.360doc.com/content/1 ... -
map3搜索与存储的一道面试题
2012-05-10 15:10 926假设一个mp3搜索引擎收录了2^24首歌曲,并记录了可收听这些 ... -
字符串匹配算法——Edit distance
2012-05-09 11:20 2551如何比较两个字符串之间的相似程度(或者差异)? 想要比较 ... -
排序算法
2012-04-21 23:06 690插入排序 shell排序 ... -
WXXR LRUList的实现
2012-03-01 16:01 777LRUList -
【专题】分治递归+排序算法
2012-03-01 11:47 728123 -
【排序】merge排序
2012-02-28 09:59 892前言 主要学习 http://en.wikipedia.or ... -
【排序】快速排序
2012-02-27 18:40 941前言 快速排序(Quick Sort)算法是 “递归+分治” ... -
算法类博客推荐
2012-02-24 18:17 6471. http://blog.csdn.net/v_J ... -
递归与分治
2012-02-24 18:16 1007分治与递归基本思想 分治:分治强调“分 ... -
Apache LRUMap实现
2012-02-23 13:10 1111源码是 org.apache.commons.collect ... -
WXXR LRUMap的实现
2012-02-22 18:33 1888前言 实现LRU算法,注意观察者模式、并发(读写锁、线程池) ... -
【专题】LRU
2012-02-22 16:21 1530包含如下内容: 一. LRU算法 ht ... -
LRU理论
2012-02-21 18:46 10381.LRU算法介绍 LRU是Least Rec ... -
【排序算法】冒泡排序(bubble sort)
2012-02-19 12:16 0问题描述 将一组乱序的整形按照由小到大排序 算法思路 经 ... -
【Core Java】并发集合
2012-02-02 17:05 1140并发容器与同步容器 ...
相关推荐
综上所述,文章《基于问题求解的C语言开篇教学研究》针对C语言开篇教学中常存在的问题,提出了一套以培养问题求解能力为核心的教学目标体系和教学方法,强调在教学过程中应注重问题的提出、分析、模型建立和编程实现...
【C#编程自学之开篇介绍】 C#是一种由微软公司开发的面向对象的编程语言,专门为.NET框架设计。它的诞生吸收了C++和Java的精髓,并结合了VB6的某些特性,使得C#成为了一种高效且易于管理的编程语言。C#的关键优势...
第1章 开篇 3 1.1 一次友好的对话 3 1.2 准确的问题描述 4 1.3 程序设计 4 1.4 实现概要 5 1.5 原理 6 1.6 习题 7 1.7 深入阅读 9 第2章 啊哈! 算法 11 2.1 三个问题 11 2.2 无处不在的二分搜索 12 2.3 ...
最后,手册还可能提供了关于软件的常见问题解答、故障排除以及最佳实践的建议,帮助用户快速解决在编程或操作过程中可能遇到的问题,提高工作效率。 由于内容中提供的文本片段存在一些识别错误和不连贯之处,以上...
《编程珠玑(第2版·修订版)》是一本...这本书通过丰富的习题和深入阅读推荐,鼓励读者实践和探索,旨在提升程序员对复杂编程问题的理解和解决能力,无论对于初学者还是经验丰富的开发者,都是极有价值的参考资料。
FAGOR数控系统内置PLCI编程手册是一份关于FAGOR数控系统中内置PLCI(可编程逻辑控制器集成)模块的编程指南。这份手册详细介绍了如何使用PLCI进行编程,包括基础知识、信号处理、程序编辑以及PLCI与数控系统CNC之间的...
本章不仅详细介绍了这些工具类的功能和用途,还提供了一系列实用的例子,帮助读者理解如何利用这些工具来解决常见的并发编程问题。这些工具类的应用范围广泛,从简单的计数器到复杂的协作模式都有涉及。 #### 九、...
该书由美国著名计算机科学家Jon Bentley撰写,通过对一系列实际编程问题的探讨,不仅提供了具体的解决方案,还深刻揭示了程序设计的基本原理和技术。 #### 二、书籍特色 1. **问题导向**:本书以解决实际编程问题...
《VC++.NET高级编程》是一本深入探讨Microsoft的C++编程环境——Visual C++.NET的专著。这本书针对的是那些已经对C++有一定基础,并希望进一步提升在.NET平台上的开发技能的程序员。以下是对该书内容的详细解读: 1...
"算法"是本书的核心,作者详细剖析了排序、搜索、图论、动态规划等领域的经典算法,让读者能够理解算法的工作原理并学会在实际问题中应用。书中深入讨论了算法的时间复杂度和空间复杂度,帮助读者评估算法效率,进行...
并行计算 陈国良编著 呵呵 大家来下载 是第三版《并行计算:结构•算法•编程(第3版)》是并行计算系列丛书之开篇,它以并行计算为主题,围绕并行计算机、并行算法和并行程序设计展开讨论,强调融并行计算机体系结构、...
文档开篇提出了一个单线程程序中存在的问题,即在执行耗时操作时,程序无法响应其他用户操作,从而引出多线程编程的必要性。这一节涉及了进程和线程的基本概念,说明了它们都是操作系统中用于描述程序运行状态的抽象...
相信知道这本书的人很多,这是讲解Unix编程的经典书籍,由于Linux属于类Unix系统,所以,学习Linux编程,这本书不可以少。 这本书的开篇首先讲的是对文本文件的操作,对了,就是那几个我们常常看见的函数--open,...