• 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

VPS Starter Arubacloud
0 głosów
1,016 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,870 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,190 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 Mędrzec (155,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,190 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 Mędrzec (155,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,190 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ź 720 wizyt
pytanie zadane 20 kwietnia 2020 w C i C++ przez p4wix Obywatel (1,040 p.)
0 głosów
1 odpowiedź 236 wizyt
pytanie zadane 20 grudnia 2017 w C i C++ przez Łukasz Wasilewski Mądrala (5,190 p.)
0 głosów
1 odpowiedź 453 wizyt
pytanie zadane 14 sierpnia 2018 w Java przez periedynek Obywatel (1,320 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...