问题描述
一个数组里有2,4,8,16,32,64,128,256全部是2的幂是代表权限的一个用户的权限值是144我想请问他有那些权限144&数组里面的值全部大于0就代表他有所有的权限?急
解决方案
解决方案二:
对,就是这样
解决方案三:
其实方法很多,比如从大到小判断大小,然后减也可以如果大于256,就一定有这个权限,否则没有如果大于256,则减去256,继续判断是否大于128,……
解决方案四:
144=10010000(二进制)说明他有16和128的权限
解决方案五:
二楼和三楼的意思好像不一样啊
解决方案六:
引用4楼SSXYC的回复:
二楼和三楼的意思好像不一样啊
其实是一样的
解决方案七:
用位与运算啊与128与==128则有128的权限
解决方案八:
传统方法List<int>getPro(int[]array,intnum){List<int>list=newList<int>();for(inti=array.Length-1;i>=0;i--){if(num<array[i])continue;list.Add(array[i]);num=num-array[i];if(num==0)break;}returnlist;}
解决方案九:
按二进制操作List<int>getPro(int[]array,intnum){List<int>list=newList<int>();foreach(intiinarray){if((num&i)==i)list.Add(i);}returnlist;}
时间: 2024-10-03 22:00:13