Uczta programistów
Book information
Description
Praktyczne rozwiązania dla zaawansowanych programistów Do tworzenia wydajnych programów nie wystarczy teoretyczna wiedza o algorytmach, strukturach danych i inżynierii oprogramowania. Istnieje pokaźna liczba sztuczek, sprytnych technik i praktycznych rozwiązań, których znajomość jest niezbędna każdemu programiście. Niniejsza książka zawiera pokaźny zestaw technik, które pomogą zaoszczędzić sporo czasu. Techniki te zostały opracowane przez twórców kodu poszukujących eleganckich i wydajnych sposobów tworzenia lepszego oprogramowania. W "Uczcie programistów" doświadczony programista Hank Warren dzieli się z Czytelnikami znanymi sobie sztuczkami, które zgromadził wraz z imponującym doświadczeniem w dziedzinie programowania aplikacji i systemów operacyjnych. Większość z tych sztuczek jest niezwykle praktyczna, niektóre zostały przedstawione jako ciekawostki lub zaskakujące rozwiązania. Ich zestawienie stanowi niesamowitą kolekcję, która będzie pomocna nawet dla najbardziej doświadczonych programistów w rozszerzeniu ich umiejętności. W książce opisano następujące zagadnienia: Obszerna kolekcja użytecznych sztuczek programistycznych Drobne algorytmy rozwiązujące często spotykane problemy Algorytmy kontroli przekroczenia ograniczeń Zmiana kolejności bitów i bajtów Dzielenie całkowite i dzielenie przez stałe Elementarne operacje na liczbach całkowitych Kod Gray"a Krzywa Hilberta Formuły wyznaczania liczb pierwszych Niniejsza książka jest doskonałą pozycją dla wszystkich programistów, którzy mają zamiar tworzyć wydajny kod. "Uczta programistów" nauczy Cię tworzenia aplikacji wysokiej jakości -- wyższej niż wymagana na uczelniach i kursach programowania. Przedmowa (9) Wstęp (11) Rozdział 1. Wprowadzenie (13) 1.1. Notacja (13) 1.2. Zestaw instrukcji i model wykonawczy (17) Rozdział 2. Podstawy (23) 2.1. Manipulowanie prawostronnymi bitami (23) 2.2. Łączenie dodawania z operacjami logicznymi (27) 2.3. Nierówności w wyrażeniach logicznych i arytmetycznych (29) 2.4. Wartość bezwzględna (30) 2.5. Rozszerzenie o znak (31) 2.6. Przesunięcie w prawo ze znakiem za pomocą instrukcji przesunięcia bez znaku (32) 2.7. Funkcja signum (32) 2.8. Funkcja porównania trójwartościowego (33) 2.9. Przeniesienie znaku (34) 2.10. Dekodowanie pola "zero oznacza 2n" (34) 2.11. Predykaty porównań (35) 2.12. Wykrywanie przepełnienia (40) 2.13. Kod warunkowy operacji dodawania, odejmowania i mnożenia (49) 2.14. Przesunięcia cykliczne (50) 2.15. Dodawanie i odejmowanie liczb o podwójnej długości (51) 2.16. Przesunięcia liczb o podwójnej długości (52) 2.17. Operacje dodawania, odejmowania i wyznaczania wartości bezwzględnej na wartościach wielobajtowych (53) 2.18. Doz, Max oraz Min (54) 2.19. Wymiana wartości między rejestrami (56) 2.20. Wymiana dwóch lub większej liczby wartości (59) Rozdział 3. Ograniczenia potęg dwójki (63) 3.1. Zaokrąglanie do wielokrotności znanych potęg liczby 2 (63) 3.2. Zaokrąglanie w górę lub w dół do następnej potęgi liczby 2 (64) 3.3. Wykrywanie przekroczenia ograniczeń potęgi dwójki (67) Rozdział 4. Ograniczenia arytmetyczne (71) 4.1. Kontrola ograniczeń liczb całkowitych (71) 4.2. Ograniczenia zakresów w operacjach sumy i różnicy (74) 4.3. Ograniczenia zakresów w operacjach logicznych (78) Rozdział 5. Zliczanie bitów (85) 5.1. Zliczanie jedynek (85) 5.2. Parzystość (94) 5.3. Zliczanie zer wiodących (97) 5.4. Zliczanie zer końcowych (104) Rozdział 6. Przeszukiwanie słów (111) 6.1 Wyszukiwanie pierwszego bajtu o wartości 0 (111) 6.2. Wyszukiwanie pierwszego ciągu jedynek o zadanej długości (117) Rozdział 7. Manipulacja bitami i bajtami (121) 7.1. Odwracanie kolejności bitów i bajtów (121) 7.2. Tasowanie bitów (126) 7.3. Transponowanie macierzy bitów (128) 7.4. Kompresja lub uogólniona ekstrakcja (137) 7.5. Uogólnione permutacje, operacja typu "owce i kozły" (143) 7.6. Zmiana kolejności oraz transformacje oparte na indeksach (148) Rozdział 8. Mnożenie (151) 8.1. Mnożenie czynników wieloelementowych (151) 8.2. Bardziej znacząca połowa 64-bitowego iloczynu (154) 8.3. Konwersje między bardziej znaczącą połową 64-bitowego iloczynu ze znakiem i bez znaku (155) 8.4. Mnożenie przez stałe (156) Rozdział 9. Dzielenie całkowitoliczbowe (161) 9.1. Warunki wstępne (161) 9.2. Dzielenie wartości wieloelementowych (165) 9.3. Krótkie dzielenie bez znaku za pomocą dzielenia ze znakiem (170) 9.4. Długie dzielenie bez znaku (173) Rozdział 10. Dzielenie liczb całkowitych przez stałe (181) 10.1. Dzielenie ze znakiem przez znaną potęgę liczby 2 (181) 10.2. Reszta ze znakiem z dzielenia przez znaną potęgę liczby 2 (182) 10.3. Dzielenie i reszta ze znakiem w przypadku innych wartości niż potęgi liczby 2 (184) 10.4. Dzielenie ze znakiem przez dzielniki ( 2 (187) 10.6. Zawieranie obsługi w kompilatorze (197) 10.7. Inne zagadnienia (201) 10.8. Dzielenie bez znaku (205) 10.9. Dzielenie bez znaku przez dzielniki ( 1 (207) 10.10. Zawieranie obsługi w kompilatorze (210) 10.11. Inne zagadnienia (dzielenia bez znaku) (212) 10.12. Zastosowalność w przypadku dzielenia z modułem i dzielenia z funkcją podłoga (215) 10.13. Podobne metody (215) 10.14. Przykładowe liczby magiczne (216) 10.15. Dzielenie dokładne przez stałe (217) 10.16. Sprawdzanie zerowej reszty po wykonaniu dzielenia przez stałą (225) Rozdział 11. Niektóre funkcje podstawowe (231) 11.1. Całkowitoliczbowy pierwiastek kwadratowy (231) 11.2 Całkowitoliczbowy pierwiastek sześcienny (239) 11.3. Całkowitoliczbowe podnoszenie do potęgi (241) 11.4. Logarytm całkowitoliczbowy (243) Rozdział 12. Niezwykłe podstawy systemów liczbowych (251) 12.1. Podstawa -2 (251) 12.2. Podstawa -1 + i (258) 12.3. Inne podstawy (261) 12.4. Najbardziej wydajna podstawa (262) Rozdział 13. Kod Graya (263) 13.1. Kod Graya (263) 13.2. Zwiększanie wartości liczb całkowitych zakodowanych w kodzie Graya (266) 13.3. Ujemno-binarny kod Graya (267) 13.4. Rys historyczny i zastosowania (268) Rozdział 14. Krzywa Hilberta (269) 14.1. Rekurencyjny algorytm generowania krzywej Hilberta (271) 14.2. Określanie współrzędnych na podstawie odległości wzdłuż krzywej Hilberta (273) 14.3. Określanie odległości na podstawie współrzędnych na krzywej Hilberta (280) 14.4. Zwiększanie wartości współrzędnych na krzywej Hilberta (282) 14.5. Nierekurencyjny algorytm generowania (285) 14.6. Inne krzywe wypełniające przestrzeń (285) 14.7. Zastosowania (286) Rozdział 15. Liczby zmiennopozycyjne (289) 15.1. Standard IEEE (289) 15.2. Porównywanie liczb zmiennopozycyjnych za pomocą operacji całkowitoliczbowych (292) 15.3. Rozkład cyfr wiodących (293) 15.4. Tabela różnych wartości (295) Rozdział 16. Wzory na liczby pierwsze (299) 16.1. Wprowadzenie (299) 16.2. Wzory Willansa (301) 16.3. Wzory Wormella (305) 16.4. Wzory na inne trudne funkcje (306) Dodatek A Tablice arytmetyczne dla maszyny 4-bitowej (313) Dodatek B Metoda Newtona (319) Bibliografia (321) Skorowidz (325)
Similar books
Hacker's Delight (2nd Edition)
2012 · PDF
Hacker’s Delight
2012 · PDF
Hacker’s Delight
2012 · EPUB
Hacker's Delight
2012 · EPUB
Hacker's Delight
2012 · MOBI
Hacker's Delight
2012 · MOBI
Hacker's Delight
2012 · EPUB
Hacker's delight
2003 · EPUB