Wpis z mikrobloga

#java #programowanie
Mirki mam problem z napisaniem programu.
Utwórz program, który wypisze na ekran wartości potęg dwójki lub wartości 0, dla wszystkich bitów z których składa się ta liczba. Przykładowo dla liczby 5 oczekiwany jest ciąg wynikowy: 0000 0401

for(int b=0; b<8;b++) {
if((wrt9&1)==1)
{
System.out.print((int)(Math.pow(2,b)));
wrt9= (byte)(wrt9>>1);
}
else
{
System.out.print("0");
}
}
Kompilator wypisuje mi 1000 0000
Powiecie co robię źle? Na pewno wynik będzie w odwrócony 1040 0000
  • 4
@mmaku89: musisz iterować od drugiej strony, coś takiego:
for(int b = 7; b >= 0 ; b--) {
if((wrt9 >> b & 1) == 1)
{
System.out.print((int)(Math.pow(2,b)));
}
else
{
System.out.print("0");
}
}
@jeffery: o rany, przez 20 minut patrzyłem i nie wypatrzyłem, dzięki
@passage: to wiem ale samo w sobie to nic nie da. sama zmiana iteracji fora nie spowoduje, że będę czytał od pierwszego bita a nie od ostatniego. Muszę chyba zmienić kierunek przesunięcia i wymyślić warunek w tym przypadku