在作權限時管理時,會常常用到位運算。咱們怎麼經過一個杼總值分解出各個權限值呢?java
思路以下:將10進制的數值轉換爲2進制字符串,循環字符串各位置的值,遇到值爲『1』時,則將後面的位置補『0』同時將2進數值轉爲10進制數。app
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; }