Hacker's Delight

Front Cover
Addison-Wesley, Sep 25, 2012 - Computers - 512 pages

"This is the first book that promises to tell the deep, dark secrets of computer arithmetic, and it delivers in spades. It contains every trick I knew plus many, many more. A godsend for library developers, compiler writers, and lovers of elegant hacks, it deserves a spot on your shelf right next to Knuth."

--Josh Bloch (Praise for the first edition)


In Hacker’s Delight, Second Edition, Hank Warren once again compiles an irresistible collection of programming hacks: timesaving techniques, algorithms, and tricks that help programmers build more elegant and efficient software, while also gaining deeper insights into their craft. Warren’s hacks are eminently practical, but they’re also intrinsically interesting, and sometimes unexpected, much like the solution to a great puzzle. They are, in a word, a delight to any programmer who is excited by the opportunity to improve.


Extensive additions in this edition include

  • A new chapter on cyclic redundancy checking (CRC), including routines for the commonly used CRC-32 code
  • A new chapter on error correcting codes (ECC), including routines for the Hamming code
  • More coverage of integer division by constants, including methods using only shifts and adds
  • Computing remainders without computing a quotient
  • More coverage of population count and counting leading zeros
  • Array population count
  • New algorithms for compress and expand
  • An LRU algorithm
  • Floating-point to/from integer conversions
  • Approximate floating-point reciprocal square root routine
  • A gallery of graphs of discrete functions
  • Now with exercises and answers

 

Contents

CHAPTER 1 INTRODUCTION
1
CHAPTER 2 BASICS
11
CHAPTER 3 POWEROF2 BOUNDARIES
59
CHAPTER 4 ARITHMETIC BOUNDS
67
CHAPTER 5 COUNTING BITS
81
CHAPTER 6 SEARCHING WORDS
117
CHAPTER 7 REARRANGING BITS AND BYTES
129
CHAPTER 8 MULTIPLICATION
171
CHAPTER 14 CYCLIC REDUNDANCY CHECK
319
CHAPTER 15 ERRORCORRECTING CODES
331
CHAPTER 16 HILBERTS CURVE
355
CHAPTER 17 FLOATINGPOINT
375
CHAPTER 18 FORMULAS FOR PRIMES
391
ANSWERS TO EXERCISES
405
APPENDIX A ARITHMETIC TABLES FOR A 4BIT MACHINE
453
APPENDIX B NEWTONS METHOD
457

CHAPTER 9 INTEGER DIVISION
181
CHAPTER 10 INTEGER DIVISION BY CONSTANTS
205
CHAPTER 11 SOME ELEMENTARY FUNCTIONS
279
CHAPTER 12 UNUSUAL BASES FOR NUMBER SYSTEMS
299
CHAPTER 13 GRAY CODE
311
APPENDIX C A GALLERY OF GRAPHS OF DISCRETE FUNCTIONS
459
Bibliography
471
Index
481
Copyright

Other editions - View all

Common terms and phrases

About the author (2012)

Henry S. Warren, Jr., has had a fifty-year career with IBM, spanning from the IBM 704 to the PowerPC and beyond. He has worked on various military command and control systems and on the SETL (SET Language) project under Jack Schwartz. Since 1973, Hank has been with IBM’s Research Division, focusing on compilers and computer architectures. He currently works on a supercomputer project aimed at an exaflop. Hank received his Ph.D. in computer science from the Courant Institute at New York University.

Bibliographic information