Konwersja na liczbę binarną za pomocą byte

Konwersja na liczbę binarną za pomocą byte
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam,
ostatnio zacząłem uczyć się języka Java. Czytając książkę natrafiłem na zadanie z którym mam problem.
Mianowicie mając zadeklarowaną zmienną int wartosc = 170 i byte wartosc2= 1 program ma wyświetlić binarna wartość zmiennej wartość.
Potrzebuję pomocy, gdyż te zadanie bardzo mnie flustruje. Czekam na pomysły.
Pozdrawiam

Kerai
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: London
0

Integer.toBinaryString() ?
za trywialne... podaj pełną treść zadania

  • Rejestracja: dni
  • Ostatnio: dni
0

Napisz program, w którym jest zainicjowana zmienna int wartosc = 170 i za pomocą zmiennej byte wrt = 1 wyświetli na ekranie wartość binarną zmiennej wartość.
Robiąc to w taki sposób jak ty napisałeś nie jest mi potrzebna ta zmienna typu byte. Myślę, że chodzi tu o jakieś operacje przesunięć bitowych właśnie za pomocą tej zmiennej byte ale nie wiem jak to zrobić.

Olamagato
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Polska, Warszawa
  • Postów: 1066
0

Komputer już trzyma wszelkie istniejące liczby w postaci binarnej, więc nic nie trzeba robić poza wyciągnięciem właściwego bita.

Kopiuj
public class NativeBinary
{
	public static void main(String[] args)
	{
		int wartosc = 170;
		System.out.print("wartosc = ");
		for(byte wrt = Integer.SIZE - 1; wrt >= 0; --wrt)
			System.out.print(Character.forDigit((wartosc >>> wrt) & 1, 2));
		System.out.println();
	}
}

Nie wiem tylko po co przydzielać wrt wartość 1. Na nic się nie przydaje odczytywanie na samym początku pętli drugiej lub przedostatniej cyfry. No chyba, żeby coś zakombinować z podwójną prein(-de)krementacją. Można też użyć (wartosc >>>= 1) & 1, aby w ogóle wyeliminować zmienną sterującą. Tyle, że wtedy zmienna wartosc po wyświetleniu swoich cyfr wyzeruje się.

  • Rejestracja: dni
  • Ostatnio: dni
0

Niestety ten kod nie zwraca poprawnego wyniku.

Output:
wartosc = 00000000000000000000000010101010

  • Rejestracja: dni
  • Ostatnio: dni
0

powinno być "10101010", bo tak wygląda 170 w postaci binarnej...

ZJ
  • Rejestracja: dni
  • Ostatnio: dni
0

To zmień kod tak, żeby ignorował zera dopóki nie wypisał pierwszej jedynki. Ogólnie mówiąc to 00050 jest tym samym co 50 (pomijając C).

  • Rejestracja: dni
  • Ostatnio: dni
0
Zjarek napisał(a)

To zmień kod tak, żeby ignorował zera dopóki nie wypisał pierwszej jedynki. Ogólnie mówiąc to 00050 jest tym samym co 50 (pomijając C).

masz pojęcie jak to zrobić?

Olamagato
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Polska, Warszawa
  • Postów: 1066
0
Kopiuj
public class NativeBinary
{
	public static void main(String[] args)
	{
		int wartosc = 170;
		System.out.print("wartosc = ");
		boolean wiodąceZera = true; //wstępnie ustawione na tak
		for(byte wrt = Integer.SIZE - 1; wrt >= 0; --wrt)
		{
			final int bit = ((wartosc >>> wrt) & 1);
			if(wiodąceZera && bit != 0)
				wiodąceZera = false;
			if(!wiodąceZera)
				System.out.print(Character.forDigit(bit, 2));
		}
		System.out.println();
	}
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.