java &|~<< 位运算设计权限代码!查询权限、增加权限、删除权限
关于二进制 转换 &|~^>><<>>> 请参考我前几篇博文
package org.rui.temp;public class Permission { /** * @author liangrui * @qq 1067165280 * 这种算法的一个优点是速度快 */ /****************************************** * 这是做测试相当于从数据库里取出的权限值 /一般根据一个模块id 取出它的crud 值就可以了 删除A---0 修改A---1 添加A---2 删除B---3 修改B---4 添加B---5 ...... 理论上可以有N个操作 用户有权限:添加A---2;删除B---3;修改B---4 2的2次方+2的3次方+2的4次方=28purview权限值 *******************************************/ static int purview=28; static int BdelPermi=3;//删除B=3 static int BaddPermi=5;//添加B=5 static int BupdaetPermi=5;//修改B==4 public static void main(String[] args) { //根据用户拥有的权限值,和功能模块的权限值来判断 用户是否拥有该操作模块的权限 isPermission(purview, BdelPermi, BaddPermi, BupdaetPermi); /** * purview 用户当前权限值 * newValue 权限值 * flag= true 为增加,false 删除 */ int modePermValue=3; //相关模块的id 这里做测试 就省略 //删除B---3 这里做测除测试 int newValue=3; boolean flag=false; //更改用户的权限 purview=setPermission(purview,modePermValue,newValue,flag); System.out.println("-------------修改权限后------------------------"); //再一次查询相关权限 isPermission(purview, BdelPermi, BaddPermi, BupdaetPermi); //添加B---5 这里做为用户增加一个权限 newValue=5; flag=true; //更改用户的权限 purview=setPermission(purview,modePermValue,newValue,flag); System.out.println("-------------修改权限后------------------------"); //再一次查询相关权限 isPermission(purview, BdelPermi, BaddPermi, BupdaetPermi); } private static void isPermission(int purview, int BdelPermi, int BaddPermi, int BupdaetPermi) { // 通过移位得到权限的二进制码 int Bdel=1<关于<<运算代码
package org.rui.temp;public class GetBin { /** * @param 根据权限值来进行位运算,二进制进多少位 */ public static void main(String[] args) { int val=3; //System.out.println(Integer.toBinaryString(val)); //32位来运算的,前面的0这里省略 System.out.println(1<<0);//01<<0=01=1 System.out.println(1<<1);//01<<1=010=2 System.out.println(1<<2);//01<<2=0100=4 System.out.println(1<<3);//01<<3=01000=8 System.out.println(1<<4);//01<<4=010000=16 System.out.println(1<<5);//一直断续....... System.out.println(1<<6); System.out.println(1<<7); System.out.println(1<<8); System.out.println(1<<9); System.out.println(1<<10); System.out.println(1<<11); }}