位运算--通过总值分解出子值(解析子值)

通过总值分解出子值

在做权限时管理时,会经常用到位运算。我们怎么通过一个杼总值分解出各个权限值呢?

思路如下:将10进制的数值转换为2进制字符串,循环字符串各位置的值,遇到值为『1』时,则将后面的位置补『0』同时将2进数值转为10进制数。

public List<Integer> getChildNum(int totalVal) {
    int itemVal;
    String binaryValStr = Integer.toBinaryString(totalVal);
    List<Integer> list = new ArrayList<>();
    StringBuilder sbNum = new StringBuilder();
    for (int i = binaryValStr.length() - 1; i >= 0; --i) {
        if (binaryValStr.charAt(i) == '1') {
            itemVal = Integer.parseInt("1" + sbNum.toString(), 2);
            list.add(itemVal);
        }
        sbNum.append('0');
    }
    return list;
}
posted @ 2017-12-04 14:54  班然  阅读(160)  评论(0编辑  收藏  举报