不知道你说的位运算是否是只要用位运算符呢?如果不是的话,实际上这个问题的本质就是将任意十进制数的转换为二进制:根据每个二进制位上的0/1,完成这个十进制数的逆运算: public void transferBi(int num) { // 接收二进制各位数 List<Integer> bi = new ArrayList<Integer>(); // 接收组成数 List<Integer> numbers = new ArrayList<Integer>(); // 计算组成数时,获取当前位的0/1值 int number = 0;
public void transferBi(int num) {
// 接收二进制各位数
List<Integer> bi = new ArrayList<Integer>();
// 接收组成数
List<Integer> numbers = new ArrayList<Integer>();
// 计算组成数时,获取当前位的0/1值
int number = 0;
// 二进制转换
while(num > 0) {
bi.add(num%2);
num = num/2;
}
// 计算组成数
for(int i = 0; i < bi.size(); i++) {
if((number = bi.get(i)) != 0) {
numbers.add(number * (int)Math.pow(2, i));
}
}
// 输出结果
System.out.println("输入的数由这些数组成:");
for(int i : numbers) {
System.out.print(i + " ");
}
}
拿这个数字和 0x01 左移N位后位与即可得到。即 for (int i =0 ; i <32, i++){
System.out.println ("get "+(input & (0x01<<i)));
}
拿这个数字和 0x01 左移N位后位与即可得到。即 for (int i =0 ; i <32, i++){
System.out.println ("get "+(input & (0x01<<i)));
}
学习了。还要加上一个判断,去除0值