Verwenden Sie ein BitSet
funktioniert für mich!
long x = 0b101011;
BitSet bs = BitSet.valueOf(new long[]{x});
for (int i = bs.nextSetBit(0); i >=0 ; i = bs.nextSetBit(i+1)) {
System.out.println(1 << i);
}
Ausgang:
1
2
8
32
Wenn Sie wirklich wollen als Binärketten ausgedruckt, hier ein kleiner Hack auf dem obigen Verfahren:
long x = 0b101011;
char[] cs = new char[bs.length()];
Arrays.fill(cs, '0');
BitSet bs = BitSet.valueOf(new long[]{x});
for (int i = bs.nextSetBit(0); i >=0 ; i = bs.nextSetBit(i+1)) {
cs[bs.length()-i-1] = '1';
System.out.println(new String(cs)); // or whatever you want to do with this String
cs[bs.length()-i-1] = '0';
}
Ausgang:
000001
000010
001000
100000
Verwenden Sie bitweise Operatoren, um zu überprüfen, ob sie im Wert festgelegt sind e Sie wollen – AngryDuck