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
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@mmaku89: Nie przesuwasz bitów w else, jak trafisz raz na 0, to już nigdy nie trafisz na nowy. przesuń linijke wrt9= (byte)(wrt9>>1); poza if'a, żeby zawsze się wykonywała :)
  • Odpowiedz
@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
  • Odpowiedz