Uczta programistów - Helion
Tytuł oryginału: Hackers Delight
Tłumaczenie: Marek Pętlicki (rozdz. 1 - 9), Bartłomiej Garbacz (rozdz. 10 - 16, dod. A, B)
ISBN: 83-7361-220-3
stron: 336, Format: B5, okładka: miękka
Data wydania: 2003-10-21
Księgarnia: Helion
Cena książki: 39,00 zł
Praktyczne rozwiązania dla zaawansowanych programistów
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.
Osoby które kupowały "Uczta programistów", wybierały także:
- F# 4.0 dla zaawansowanych. Wydanie IV 96,45 zł, (29,90 zł -69%)
- Systemy reaktywne. Wzorce projektowe i ich stosowanie 65,31 zł, (20,90 zł -68%)
- Scratch. Komiksowa przygoda z programowaniem 36,06 zł, (11,90 zł -67%)
- GameMaker. Kurs video. Kompleksowy przewodnik tworzenia gier platformowych 154,58 zł, (55,65 zł -64%)
- Dost 89,00 zł, (35,60 zł -60%)
Spis treści
Uczta programistów -- spis treści
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)