Konwersja na liczbę binarną za pomocą byte

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

0

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

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ć.

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.

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ę.

0

Niestety ten kod nie zwraca poprawnego wyniku.

Output:
wartosc = 00000000000000000000000010101010

0

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

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).

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ć?

0
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();
	}
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1