• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Praktyczne zastosowanie enum i przesunięcie bitów

Fiszki IT
Fiszki IT
0 głosów
388 wizyt
pytanie zadane 5 października 2018 w Java przez Potopiec Obywatel (1,550 p.)
Od niedawna próbuje bawić się Javą i nawet mi wychodzi. Nie wie jednak jakie praktyczne (bo teorie mniej więcej znam) zastosowanie na "enum" i operacje na bitach. Mógłby ktoś podać jakieś przykłady? Dzięki bardzo.

4 odpowiedzi

+3 głosów
odpowiedź 5 października 2018 przez miro Pasjonat (23,910 p.)

Najczęściej Enumy używa się po to, aby określić skończony zbiór. Przez co szybszy jest do nich dostęp oraz mniejsza szansa na pomyłkę. Przykład:

enum Size {
  S, M, L, XL, XXL, XXXL;
}
Tshirt makeTshirt(Size.M, "red");

Mniejsza szansa, że popełnisz błąd przy określaniu rozmiaru. Możesz jeszcze dopisać pola do tych rozmiarów.  

Kolekcje używające Enumy takie jak EnumSet i EnumMap są bardzo szybkie.

Operacje na bitach pozwalają czasami na triki i szybsze obliczenia. 

+3 głosów
odpowiedź 5 października 2018 przez Aisekai Nałogowiec (42,230 p.)
edycja 6 października 2018 przez Aisekai
Przesunięcia bitowe są szybsze od mnożenia przez 2^n. Chociaż według mnie, nie jest to na tyle znacząco szybsze od zwykłego mnożenia żeby opłacało się używać przesunięcia (zapis x=5*2 jest według mnie bardziej czytelny niż x=5<<1).

AND bitowe jest bardzo pomocne, gdybyś chciał tworzyć jakieś maski (np maska podsieci). Bezposredniego zastosowania reszty operacji bitowych nie widze - możliwe, że są wykorzystywane pośrednio w innych metodach.

O enumach, dobrze wyjaśnił miro. Od siebie dodam jeszcze, że są dużo lepszym rozwiązaniem niż stosowanie booleanow - łatwiej o rozbudowę aplikacji.
komentarz 6 października 2018 przez mokrowski VIP (145,460 p.)
Co do przesunięć bitowych we współczesnych językach programowania i stanie obecnych kompilatorów, oraz tego czy takie operacje są szybsze/wolniejsze niż "potęgowanie per 2", to może sprawdź czy ... prawda nie mija się z tym co twierdzisz :)
komentarz 7 października 2018 przez Aisekai Nałogowiec (42,230 p.)
Mozliwe, że kompilator jest wstanie sobie to zoptymalizować i potęgowanie per 2 (i nie tylko, kazda liczba w pamieci komputera jest zapisana 0/1 więc mnożąc dwie liczby, mozna dodawać odpowiednio przesunięta mnozna odpowiednia ilość razy), zamienia na przesuniecie. Jednakże, samo w sobie przesuwanie (czy to w lewo czy w prawo) powinno byc szybsze od mnożenia jeśli kompilator tego nie optymalizuje.
komentarz 7 października 2018 przez mokrowski VIP (145,460 p.)
Nie. Na większości platform (pomijając np. proste 8-bitowce) to co napisałeś jest nieprawdą. A wyrażając mnożenie jako przesunięcie, zmniejszasz czytelność kodu.
komentarz 7 października 2018 przez Aisekai Nałogowiec (42,230 p.)
Dobra, masz rację. Nie opłaca się używać przesunięcia bitowego do jakiegokolwiek mnożenia - nie mówiąc o szybkości, czy czytelności to problem jest też taki że łatwo o błąd przesuwając np ujemne liczby w prawo.
+1 głos
odpowiedź 5 października 2018 przez Tomasz Rogalski Bywalec (2,800 p.)
Przesunięcia na bitach użyłem gdy trzeba było czytać obrazki mnist do rozpoznawania obrazów.

Enum to wtedy kiedy chcesz aby ktoś nie przekraczał granic np. enum TYDZIEŃ, dni ma być siedem i już. Np nie chcesz żeby ktoś w programie użył dnia tygodnia numer 8.
0 głosów
odpowiedź 6 października 2018 przez Marek Arnal Użytkownik (560 p.)
Zastosowań enum jest bardzo wiele, np: stany obiektów, jeżeli chodzi o przesunięcie bitowe to kiedyś wykorzystywałem do zmiany poziomu uprawnień, przesunięcie w lewo wyższy poziom uprawnień w prawo obniżenie, szczegółów nie pamiętam ale działało i to tyle więcej razy nie miałem z tym styczności

Podobne pytania

0 głosów
1 odpowiedź 182 wizyt
pytanie zadane 20 kwietnia 2020 w C i C++ przez p4wix Użytkownik (900 p.)
0 głosów
1 odpowiedź 172 wizyt
pytanie zadane 20 grudnia 2017 w C i C++ przez Łukasz Wasilewski Mądrala (5,190 p.)
0 głosów
1 odpowiedź 215 wizyt
pytanie zadane 14 sierpnia 2018 w Java przez periedynek Obywatel (1,320 p.)
Porady nie od parady
Nie wiesz jak poprawnie zredagować pytanie lub pragniesz poznać którąś z funkcji forum? Odwiedź podstronę Pomoc (FAQ) dostępną w menu pod ikoną apteczki.FAQ

84,756 zapytań

133,559 odpowiedzi

295,985 komentarzy

56,012 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...