`
canofy
  • 浏览: 821858 次
  • 性别: Icon_minigender_1
  • 来自: 北京、四川
社区版块
存档分类
最新评论

位运算的权限应用

    博客分类:
  • j2EE
阅读更多
package cn.test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;

/**
 * yicha 
 * Sep 5, 2008 
 */

public class BitOperator {
	
	public String[] getData(){
//		String[] result={"1","5","7","12","16","19","30"};
//		String[] result=new String[10];
//		for(int i=1;i<10;i+=2){
//			result[i]=String.valueOf(1*2*i);
//		}
		String[] result={"1","2","4","8","10","20","40","80","160","320","640","1280","2560","5120"};
//		String[] result={"1","2","4","8","10","20","40","80","160"};
		return result;
	}
	
	/**
	 * 根据具体的值解析到权限值,比如:具体的权限到一个权限值
	 * 存储这个值
	 * @param arg
	 * @return
	 */
	public Long doBitOp(String[] arg){
		long result = 0;
		for (int i = 0; i < arg.length; i++) {
			result |= Long.parseLong(arg[i], 16);
		}
		return new Long(result);
	}
	
	/**
	 * 解析具体的值到对应的值,比如:权限值解析到具体的权限 15解析为(1,2,4,8)
	 * @param arg
	 * @return
	 */
	public String[] phaseBitOp(long arg){
		List list=new ArrayList();
		int number=1;
		for(int i=0;i<16;i++){
			long temp=number<<i;//左移i位,数变大,2的i次方
			if((temp&arg)>0){
				list.add(Long.toHexString(temp));
			}
		}
		String[] result=new String[list.size()];
		for(int i=0;i<list.size();i++){
			result[i]=list.get(i).toString();
		}
		return result;
	}
	
	/**
	 * 二分查找法,没有找到则返回-1,否则返回查找到的位置,从0开始
	 * @param a
	 * @param target
	 * @return
	 */
	public int binarySearch(int a[],int target){
		int low=0;
		int high=a.length-1;
		while(low<=high){
			int mid=(low+high)>>>1;//无符号右移一位,即相当于绝对值除2
			int midValue=a[mid];
			if(midValue<target){
				low=mid+1;
			}else if(midValue>target){
				high=mid-1;
			}else{
				return mid;
			}			
		}
		return -1;
	}
	
	/**
	 * 随机产生数组,数组长度不大于maxArraySize+1,数据不大于maxValue
	 * @param maxArraySize
	 * @param maxValue
	 * @return
	 */
	public int[] generateRandomSortedArray(int maxArraySize, int maxValue) { 
		Random rand=new Random();
		int arraySize = 1 + rand.nextInt(maxArraySize); //至少保证有1个数据
		int[] randomArray = new int[arraySize]; 
		for (int i = 0; i < arraySize; i++) { 
			randomArray[i] = rand.nextInt(maxValue); 
		} 
		Arrays.sort(randomArray); 
		return randomArray;
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		BitOperator bit=new BitOperator();
		int a[]=bit.generateRandomSortedArray(10, 50);
		for(int i=0;i<a.length;i++){
			System.out.println(""+a[i]);
		}
		
		System.out.println("二分法查找结果:"+bit.binarySearch(a, 15));
//		BitOperator bit=new BitOperator();
//		Long result=bit.doBitOp(bit.getData());		
//		System.out.println(result);
//		long temp=15;		
//		String[] phaseBitStr=bit.phaseBitOp(temp);
//		for(int i=0;i<phaseBitStr.length;i++){
//			System.out.print(phaseBitStr[i]+",");
//		}
		
		
	}

}

分享到:
评论

相关推荐

    vb 转二进制串并运算判断第几位为0

    vb 转二进制串并运算判断第几位为0  应用于权限控制 例如第几位为0的就有权限 用一个数可以表示31种类型的权限 还可以组合 

    老生常谈PHP位运算的用途

    在实际应用中可以做用户权限的应用 我这里说到的权限管理办法是一个普遍采用的方法,主要是使用到”位运行符”操作,& 位与运算符、| 位或运行符。参与运算的如果是10进制数,则会被转换至2进制数参与运算,然后计算...

    论文研究-基于IC协议的分块加密方案及其应用.pdf

    结果分析表明,分块加密方案所采用的IC协议无须求逆运算,双线性对运算有效降低,便于密钥管理。在加/解密效率上分块加密方案与BF-IBE相当,安全性基于椭圆曲线上的离散对数问题,应用于快递领域能有效保护用户隐私...

    计算机应用基础(第2版)-在线作业-3.doc

     位 得分: 0 知识点: 计算机应用基础(第2版) 9. (5分) 在Excel 2010的页面设置中,不能够设置________。 A. 页面 B. 页边距 C. 每页字数 D. 页眉/页脚 得分: 5 知识点: 计算机应用基础(第2版) 10. (5...

    数据库系统及应用课程总结.docx

    重点是关系模式完整性的分类和功能,以及关系代数中集合运算和关系运数据库系统及应用课程总结全文共6页,当前为第2页。数据库系统及应用课程总结全文共6页,当前为第2页。算。最后介绍了关系数据库系统的三层模式...

    20春学期《计算机应用基础》在线平时作业-参考资料.docx

    D CPU的型号 5 "冯 诺依曼计算机"的体系结构主要分为____五大组成 A 外部存储器、内部存储器、CPU、显示、打印 B 输入、输出、运算器、控制器、存储器 C 输入、输出、控制、存储、外设 D 都不是 6 在PC机中,应用最...

    中职计算机应用基础期中试卷-.docx

    16、微型计算机系统包括( ) A、硬件系统和软件系统 B、主机和外设 C、主机和各种应用程序 D、运算器、控制器和存储器 17、不属于附件中常用工具的是( ) A、360杀毒软件 B、写字板 C、画图 D、记事本 18、更改...

    Linux /Unix 共享内存

    然后将“模式” 和“权限标识”进行“或”运算,做为第三个参数。 如: IPC_CREAT | IPC_EXCL | 0640 例子中的0666为权限标识,4/2/1 分别表示读/写/执行3种权限,第一个0是UID,第一个6(4+2)表示拥有者的权限,第...

    中职计算机应用基础期中试卷.docx

    A、磁盘空间管理 B、磁盘扫描程序 C、磁盘碎片整理 D、备份 16、微型计算机系统包括( ) A、硬件系统和软件系统 B、主机和外设 C、主机和各种应用程序 D、运算器、控制器和存储器 中职计算机应用基础期中试卷全文共5...

    计算机应用基础第四次作业.doc

    (A) 二进制可与十进制直接进行算术运算 (B) 二进制运算规则简单 (C) 二进制只有0和1两个状态,技术上容易实现 (D) 二进制数的0和1与逻辑代数的"真"和"假"相吻合,适合于计算机进行逻辑运算 正确答案:A 3....

    h_JAVA 2应用编程150例.rar

    实例75 C/S结构的分布式运算 248 第7章 Java B/S结构编程 253 实例76 简单的Servlet程序 254 实例77 简单的留言簿 256 实例78 JSP+Java Bean的计数器 258 实例79 数据库查询 260 实例80 文件的上传下载 262 实例81 ...

    generic-bitmask:用于在JavaScript中计算和处理位掩码的模块

    通过使用位掩码对值进行按位与运算,可以测试某些位是否为开。 使用位掩码,可以很容易地将多个标志的布尔状态存储在单个变量中(基数较高)。一个非常常见的用例是存储对象的“权限”值。 例如,可以通过将两个...

    RFID应用设计方案.doc

    如贴有托盘标的,每托盘货物信息通过进货口读写器写入托 盘标,同时形成订单数据关联,通过计算机仓储管理信息系统运算出库位(或人工在一开 始对该批入库指定库位),通过网络系统将存货指令发到仓库客户端(或叉车车载...

    精通sql结构化查询语句

    9.6.2 内连接与右外连接的综合应用 9.6.3 UNION集合运算与多表连接应用 9.7 小结第10章 子查询 10.1 子查询的简单应用 10.1.1 子查询概述 10.1.2 在多表查询中使用子查询 10.1.3 在子查询中使用聚合函数 10.1.4 使用...

    java应用软件程序设计

    288 第8章 Java安全控制编程 291 实例87 控制访问权限 292 实例88 产生密钥 296 实例89 单钥加解密 299 实例90 双钥加解密 301 实例91 数字签名 303 实例92 实现SSL协议 306 实例93 简单的...

    中职计算机应用基础期中试卷.doc

    A、磁盘空间管理B、磁盘扫描程序C、磁盘碎片整理D、备份 16、微型计算机系统包括( ) A、硬件系统和软件系统 B、主机和外设 C、主机和各种应用程序 D、运算器、控制器和存储器 17、不属于附件中常用工具的是( ) A、...

    2021计算机程序设计-计算机程序设计综合练习(精选试题).doc

    运算速度快、运算精度高、应用范围广、能连续的、自动地运行工作 B.运算速度快、运算精度高、存储容量大、处理信息多 C.运算速度快、运算精度高、存储容量大、能连续的、自动地运行工作 D.运算速度快、运算精度高、...

Global site tag (gtag.js) - Google Analytics