Konwersja na liczbę binarną za pomocą byte

Odpowiedz Nowy wątek
2011-10-24 18:12
Damian
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

Pozostało 580 znaków

2011-10-24 20:03
0

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

Pozostało 580 znaków

2011-10-24 23:27
Damian
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ć.

Pozostało 580 znaków

2011-10-25 18:22
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ę.


Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?

Pozostało 580 znaków

2011-11-04 20:36
Rafał
0

Niestety ten kod nie zwraca poprawnego wyniku.

Output:
wartosc = 00000000000000000000000010101010

ale to jest poprawny output - byku_guzio 2011-11-04 20:40
czyli dobrze... - krwq 2011-11-04 20:41

Pozostało 580 znaków

2011-11-04 20:46
Rafał
0

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

Wtedy potrzebujesz dodatkowej zmiennej. A z tego co zrozumiałem należało napisać zadanie korzystając jedynie z dwóch podanych. - Olamagato 2011-11-04 21:16

Pozostało 580 znaków

2011-11-04 20:48
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).

Pozostało 580 znaków

2011-11-04 21:13
Rafał
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ć?

Pozostało 580 znaków

2011-11-04 22:13
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();
    }
}

Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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