public class Main
{
public static void main (String[] args)
{
// 假设只有10个权限
// 位操作实现的权限管理最多只能管理32个权限(0-31)。
int powerLength = 10;
// 某人所拥有的权限
int power[] = {1, 3, 4 };
int powerCode = 0;
for (int i = 0; i < power.length; i++)
{
powerCode |= 1 << power[i];
}
System.out.println("------------------------------------");
for (int i = 0; i < powerLength; i++)
{
int temp = powerCode >> i;
if ((temp & 1) == 1)
{
System.out.println("权限:" + i);
}
}
}
}
public class Main
{
public static void main (String[] args)
{
//用long型也只能管理64种权限
int powerLength = 64;
// 某人所拥有的权限
int power[] = {0, 1, 3, 4, 31, 35, 63 };
long powerCode = 0;
for (int i = 0; i < power.length; i++)
{
System.out.println(Long.toBinaryString((long) 1 << power[i]));
powerCode |= (long) 1 << power[i];
}
System.out.println(Long.toBinaryString(powerCode));
for (int i = 0; i < powerLength; i++)
{
long temp = powerCode >> i;
if ((temp & 1) == 1)
{
System.out.println("权限:" + i);
}
}
}
}