Operacje bitowe / java

Operacje bitowe / java
MA
  • Rejestracja:około 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:3
0

Utwórz program, który zdefiniuje zmienną typu int o dowolnej wartości i nazwie n. Następnie napisz program wyświetlający na ekranie:

  1. wartość reprezentowaną przez ostatnie 5 bitów liczby n;
  2. 1 lub 0 zależnie od wartości siódmego bitu tej zmiennej;
  3. wartości poszczególnych bajtów (począwszy od najbardziej znaczącego) z których składa się ta liczba - wynikiem powinny być 4 liczby z przedziału
    [0 - 255]
  4. wartość reprezentowaną przez dwa środkowe bajty liczby n reprezentowane jako liczba z przedziału [0, 2^{16}-1 = 65535].

Po prostu nie wiem jak się za to zabrać. Proszę o ukierunkowanie jak zacząć, czy na co zwrócić uwagę.

szweszwe
  • Rejestracja:ponad 11 lat
  • Ostatnio:10 dni
  • Lokalizacja:Kraków
  • Postów:1694
1

Wpierw zrób zmienną n i wypisz jej wartość. Zrobiłeś to już?

edytowany 1x, ostatnio: szweszwe
MA
  • Rejestracja:około 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:3
0

Tak zrobiłem, może trochę źle ująłem treść pytania.
int n = 3;
Patrząc na 1 część zadania jeżeli dobrze rozumiem mam zwrócić ostatnie 5 bitow liczby n.
W jaki sposób mam wrócić do tej postaci i zaznaczyć, że chce aby wyświetliło się tylko ostatnie 5.

szweszwe
  • Rejestracja:ponad 11 lat
  • Ostatnio:10 dni
  • Lokalizacja:Kraków
  • Postów:1694
2

Ja bym na twoim miejscu zaczął używać google.
Takie coś mi znalazło jak wpisałem zapytanie o zmianę inta na bity: https://www.geeksforgeeks.org/java-lang-integer-tobinarystring-method/
a takie coś jak wpisałem, że chcę ostatnie znaki: https://howtodoinjava.com/java/string/get-last-4-characters/
akurat tutaj 4 ale łatwo zgadnąć jak będzie dla 5.

codex
jeżeli to zadanie to raczej gotowa funkcja nie przejdzie
szweszwe
No nie wiem, może OP się wypowie bo tak to możemy sobie gdybać i gdybać :)
RA
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 8 godzin
  • Postów:8
2

Skoro mają to być operacje bitowe, może warto rzeczywiście je wykonać, zamiast bawić się w wysokopoziomowe obcinanie stringów?
Masz operatory & (bitwise and) i << (bitwise shift), to wszystko czego potrzebujesz.
Operator & działa jak and, tylko że zamiast wartości logicznych porównuje kolejne bity. Operator << przesuwa reprezentację bitową liczby o 1 w lewo.
W pierwszym zrób sobie maskę, czyli liczbę 0b11111. Jeśli weźmiesz n & mask, to dostaniesz tylko 5 ostatnich bitów z n - bo w mask masz przecież zera wszędzie poza 5 ostatnimi.
Jeśli chcesz 7 bit, wystarczy przesunąć 1 sześć razy w lewo, czyli n & (1<<6).
Wartość bajtów dostaniesz biorąc maskę złożoną z ośmiu jedynek. Później przesuniesz ją sobie w lewo odpowiednią ilość razy.

codex
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 lata
  • Postów:69
1

wprawdzie to nie gotowiec ale ślicznie wyjaśnione na przykładach
https://www.geeksforgeeks.org/check-whether-k-th-bit-set-not/

MA
  • Rejestracja:około 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:3
0

Dzięki za pomoc, zadanie zrobione.

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.