java实现BitMap
package bitmap;
public class BitMap {
private byte[] bytes;
public BitMap(byte[] bytes) {
super();
this.bytes = bytes;
}
public BitMap() {
super();
}
public BitMap(int size) {
super();
int number = size / 8 + 1;// may waste a byte, which does not matter
bytes = new byte[number];
}
/**
*
* @param n
* n>=1
*/
public void setBit(int n) {
if (n <= 0)
return;
int index = -1;
int offset = -1;
if (0 == n % 8) {
index = n / 8 - 1;
offset = 7;
} else {
index = n / 8;
offset = n % 8 - 1;
}
switch (offset) {
case 0:
bytes[index] = (byte)(bytes[index]|0x01);
break;
case 1:
bytes[index] = (byte)(bytes[index]|0x02);
break;
case 2:
bytes[index] = (byte)(bytes[index]|0x04);
break;
case 3:
bytes[index] = (byte)(bytes[index]|0x08);
break;
case 4:
bytes[index] = (byte)(bytes[index]|0x10);
break;
case 5:
bytes[index] = (byte)(bytes[index]|0x20);
break;
case 6:
bytes[index] = (byte)(bytes[index]|0x40);
break;
case 7:
bytes[index] = (byte)(bytes[index]|0x80);
break;
}
}
public boolean get(int n){
if (n <= 0)
return false;
int index = -1;
int offset = -1;
if (0 == n % 8) {
index = n / 8 - 1;
offset = 7;
} else {
index = n / 8;
offset = n % 8 - 1;
}
switch (offset) {
case 0:
return (byte)(bytes[index]&0x01)!=0;//2^0
case 1:
return (byte)(bytes[index]&0x02)!=0;
case 2:
return (byte)(bytes[index]&0x04)!=0;
case 3:
return (byte)(bytes[index]&0x08)!=0;
case 4:
return (byte)(bytes[index]&0x10)!=0;
case 5:
return (byte)(bytes[index]&0x20)!=0;
case 6:
return (byte)(bytes[index]&0x40)!=0;
case 7:
return (byte)(bytes[index]&0x80)!=0;
}
return false;
}
public static void main(String[] args) {
BitMap bMap = new BitMap(60);
bMap.setBit(59);
bMap.setBit(20);
bMap.setBit(21);
for(int i=1;i<=60;i++){
if(bMap.get(i)==true)
System.out.println(i);
}
}
}
java实现BitMap的更多相关文章
- Java的bitmap到C
在很多情况下android程序员需用到c,bimap这个是一个java中的类,android底层有一个skbitmap类和其对应.先在我遇到了需要把java的bitmap传递到底层中进行一些操作.现在 ...
- java使用bitmap求两个数组的交集
一般来说int代表一个数字,但是如果利用每一个位 ,则可以表示32个数字 ,在数据量极大的情况下可以显著的减轻内存的负担.我们就以int为例构造一个bitmap,并使用其来解决一个简单的问题:求两个数 ...
- 【算法与数据结构专场】BitMap算法基本操作代码实现
上篇我们讲了BitMap是如何对数据进行存储的,没看过的可以看一下[算法与数据结构专场]BitMap算法介绍 这篇我们来讲一下BitMap这个数据结构的代码实现. 回顾下数据的存储原理 一个二进制位对 ...
- Android笔记--Bitmap
Android | Bitmap解析 Android中Bitmap是对图像的一种抽象.通过他可以对相应的图像进行剪裁,旋转,压缩,缩放等操作.这里循序渐进的一步步了解Bitmap的相关内容. 先了解B ...
- Android图像处理之BitMap(2)
Bitmap 相关 1. Bitmap比较特别 因为其不可创建 而只能借助于BitmapFactory 而根据图像来源又可分以下几种情况: * png图片 如:R.drawable.tianjin J ...
- Android Bitmap变迁与原理解析(4.x-8.x)
App开发不可避免的要和图片打交道,由于其占用内存非常大,管理不当很容易导致内存不足,最后OOM,图片的背后其实是Bitmap,它是Android中最能吃内存的对象之一,也是很多OOM的元凶,不过,在 ...
- 图片系列(6)不同版本上 Bitmap 内存分配与回收原理对比
请点赞关注,你的支持对我意义重大. Hi,我是小彭.本文已收录到 GitHub · AndroidFamily 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭锐] ...
- Android之三种网络请求解析数据(最佳案例)
AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法. ...
- Android 保存图片到SQLite
[转:原文] Resources res = getResources(); Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.ico ...
随机推荐
- ASP.NET 5探险(5):利用AzureAD实现单点登录
题记:在ASP.NET 5中虽然继续可以沿用ASP.NET Identity来做验证授权,不过也可以很容易集成支持标准协议的第三方服务,比如Azure Active Directory. 其实,在AS ...
- 第二篇:SOUI源码的获取及编译
源代码的获取 SOUI的源码采用SVN管理. SVN:http://code.taobao.org/svn/soui2 这里主要包含两个目录:trunk 及 third-part. trunk目录保存 ...
- wpf template的code写法
this.Template = XamlReader.Load ("<ControlTemplate xmlns='http://schemas.microsoft.com/clien ...
- loj 1030概率dp
题目链接:http://lightoj.com/volume_showproblem.php?problem=1030 思路:一直以来对这种概率题都挺感冒的=.=......还是说一下思路吧,dp[i ...
- web2py学习之getting start环境搭建
一般如果做一个工程,可能需要ide,需要好的工具,web2py自包含了一个基于web的开发工具,但是并不算很好的编辑器 第二个可以使用的是pycharm,利用pycharm可以创建web2py的web ...
- 汇编学习(一)——win7 64位调出debug
一.安装方法: 1.下载一个dosbox和win7 32位debug.exe,安装dosbox,打开页面 2. 将debug.exe放入磁盘根目录,这里以D盘为例.在dosbox中输入mount c ...
- DotNet 资源大全中文版,内容包括:编译器、压缩、应用框架、应用模板、加密、数据库、反编译、IDE、日志、风格指南等
DotNet 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-dotnet 是由 quozd 发起和维护.内容包括:编译器. ...
- java运行jar命令提示没有主清单属性
转自:http://jingyan.baidu.com/article/db55b60990f6084ba30a2fb8.html 可运行的jar:http://mushiqianmeng.blog. ...
- DataTables - 问题集
1.增加额外搜索条件 var reqData = {}; var extraSearch = []; var oTable = $('table selector').dataTable({ 'aja ...
- Minitab中相关系数R-Sq和修正R-Sq(adj)的意思,计算公式和区别[转载]
转载自:http://www.pinzhi.org/thread-7762-1-1.html Minitab中相关系数R-Sq和修正的相关系数R-Sq(adj)的意思,计算公式和区别 在Minitab ...