-- ·|­û / µù¥U -- ¡@
¡@±b¸¹¡G
¡@±K½X¡G
¡@ | µù¥U | §Ñ°O±K½X
3/26 ·s®Ñ¨ì¡I 3/19 ·s®Ñ¨ì¡I 3/14 ·s®Ñ¨ì¡I 12/12 ·s®Ñ¨ì¡I
ÁʮѬyµ{¡EQ & A¡E¯¸°È¯d¨¥ª©¡E«ÈªA«H½c
¢x 3ds Max¢x Maya¢x Rhino¢x After Effects¢x SketchUp¢x ZBrush¢x Painter¢x Unity¢x
¢x PhotoShop¢x AutoCad¢x MasterCam¢x SolidWorks¢x Creo¢x UG¢x Revit¢x Nuke¢x
¢x C#¢x C¢x C++¢x Java¢x ¹CÀ¸µ{¦¡¢x Linux¢x ´O¤J¦¡¢x PLC¢x FPGA¢x Matlab¢x
¢x Àb«È¢x ¸ê®Æ®w¢x ·j¯Á¤ÞÀº¢x ¼v¹³³B²z¢x Fluent¢x VR+AR¢x ANSYS¢x ²`«×¾Ç²ß¢x
¢x ³æ´¹¤ù¢x AVR¢x OpenGL¢x Arduino¢x Raspberry Pi¢x ¹q¸ô³]­p¢x Cadence¢x Protel¢x
¢x Hadoop¢x Python¢x Stm32¢x Cortex¢x Labview¢x ¤â¾÷µ{¦¡¢x Android¢x iPhone¢x
¥i¬d®Ñ¦W,§@ªÌ,ISBN,3dwoo®Ñ¸¹
¸Ô²Ó®ÑÄy¤ÀÃþ

ºâªk¤ß±o¡G°ª®Äºâªkªº¶ø¯µ¡]­ì®Ñ²Ä2ª©¡^

( ²Åé ¦r)
§@ªÌ¡G¡]¬ü¡^Henry S. Warren, Jr. µÛÃþ§O¡G1. -> µ{¦¡³]­p -> ºtºâªk
ĶªÌ¡G
¥Xª©ªÀ¡G¾÷±ñ¤u·~¥Xª©ªÀºâªk¤ß±o¡G°ª®Äºâªkªº¶ø¯µ¡]­ì®Ñ²Ä2ª©¡^ 3dWoo®Ñ¸¹¡G 37855
¸ß°Ý®ÑÄy½Ð»¡¥X¦¹®Ñ¸¹¡I

¡i¯Ê®Ñ¡j
NT°â»ù¡G 445 ¤¸

¥Xª©¤é¡G3/1/2014
­¶¼Æ¡G417
¥úºÐ¼Æ¡G0
¯¸ªø±ÀÂË¡G
¦L¨ê¡G¶Â¥Õ¦L¨ê»y¨t¡G ( ²Åé ª© )
¥[¤JÁʪ«¨® ¢x¥[¨ì§Úªº³Ì·R
(½Ð¥ýµn¤J·|­û)
ISBN¡G9787111453567
§@ªÌ§Ç¡@|¡@ĶªÌ§Ç¡@|¡@«e¨¥¡@|¡@¤º®e²¤¶¡@|¡@¥Ø¿ý¡@|¡@§Ç
(²Åé®Ñ¤W©Ò­z¤§¤U¸ü³sµ²¯Ó®É¶O¥\, ®¤¤£¾A¥Î¦b¥xÆW, ­YŪªÌ»Ý­n½Ð¦Û¦æ¹Á¸Õ, ®¤¤£«OÃÒ)
§@ªÌ§Ç¡G

ĶªÌ§Ç¡G

«e¨¥¡G

³y¤O²Ä¤@©w«ß¡G³n¥óºûÅ@¦¨¥»»Pµ{§Ç­û³Ð³y¤Oªº¥­¤è¦¨¥¿¤ñ¡C

¡X¡XRobert DúPBliss¡A1992¦~

¥»®Ñ¦¬¶°¤Fµ§ªÌ¦h¦~¨ÓÁ`µ²ªº¤@¨Ç½sµ{¤p§Þ¥©¡A¨ä¤¤¤j³¡¤À³£¥²¶·¹B¦æ¦b¥H¤G¶i¨î¸É½X¨Óªí¥Ü¾ã¼Æªº¹q¸£¤W¡CºÉºÞ¥»®Ñ°²³]±H¦s¾¹ªø«×¬O32¦ì¡A¦ý¦b±H¦s¾¹ªø«×¤£¬O32¦ìªº¹q¸£¤¤¡A³o¨Ç§Þ¥©°ò¥»¤W¤´¯à¾A¥Î¡C

¥»®Ñ¤£¥´ºâÁ¿°ª²`ªº±Æ§Çºâªk©Î¬O½sĶ¾¹ªºÀu¤Æ§Þ³Nµ¥¤j¸ÜÃD¡A¦Ó¬OµÛ­«¨Ó½Í¯A¤Î³æ­Ó­pºâ¾÷¦r²Õ©Î«ü¥Oªº¤p§Þ¥©¡A¤ñ¦p«ç¼Ë²Î­p¦r²Õ¤¤­È¬°1ªº¦ì¤¸¼Æ¡C¦¹Ãþ§Þ¥©³q±`»Ý­n²V¥Îºâ³N»PÅÞ¿è«ü¥O¡C

§Ú­ÌÁٻݰ²©w¾ã¼Æ·¸¥X¤¤Â_¤w¸g«Ì½ª¡A³o¼Ëªº¸Ü¡A´Nºâ¾ã¼Æ¹Bºâ·¸¥X¤F¡A¤]¤£·|¥X°ÝÃD¡CC¡BFortran¡BJavaµ¥µ{§Ç³£¬O¦p¦¹¡A¦ý¨Ï¥ÎPascal»PAda»y¨¥ªºµ{§Ç­û¤@©w­nª`·N³o¤@ÂI¡I

¦b¥»®Ñ»y¹Ò¤¤¡A¹q¸£¡B­pºâ¾÷(computer)¡B¾÷¾¹(machine)¡B³B²z¾¹(processor)µ¥µü±`±`³£«ü¥N¤¤¥¡³B²z¾¹(CPU)¡A¬GĶ¤å¦b¤£­P²V²cªº±¡ªp¤U¡A±N¨äµø¬°¤¬¬Û³q¥Îªº·§©À¡C¡X¡XĶªÌª`

integer overflow¡A«üºâ³N¹Bºâ®É¥Ñ¤_µ²ªG¹L¤j©Î¹L¤p¦Ó¶W¥X¦sÀx­S³òªº±¡§Î¡C¸Ô±¡°Ñ¨£¡Ghttps¡G//enúPwikipediaúPorg/wiki/Integer_overflow¡C¡X¡XĶªÌª`

®Ñ¤¤¥H³q«Uªº»y¨¥¨ÓÁ¿­z¦U§Þ¥©¡A¥u¦³ºâªk§t¸q¤£©úÅã®É¤~·|µ¹¥XÃÒ©ú¡A¦³®É¬Æ¦Ü²¤¥hÃÒ©ú¡Cºâªk¤¤±N·|¥X²{­pºâ¾÷ºâ³N«ü¥O¡B¡§¦aªO¡¨¨ç¼Æ¡Bºâ³N»PÅÞ¿è¾Þ§@²V·fµ¥¤º®e¡A¥¦­Ì­nÃÒ©ú°_¨Ó³q±`¤ñ¸û§xÃø¡A¦Ó¥B¤]¤£©öªí­z¡C

floor function¡A¤S¥s¦V¤U¨ú¾ã¨ç¼Æ©Î³Ì§C­È¨ç¼Æ¡Aªð¦^¤£¤j¤_¦ÛÅܶqªº³Ì¤j¾ã¼Æ¡A¤]±`ºÙ¬°¡§°ª´µ¨ç¼Æ¡¨¡C¸Ô±¡°Ñ¨£¡Ghttps¡G//zhúPwikipediaúPorg/wiki/¦aªO¨ç¼Æ¡C¡X¡XĶªÌª`

µ§ªÌ§â«Ü¦hºâªk³£¼g¦¨¤Fµ{§Ç¥N½X¡A¦b¹q¸£¤W°õ¦æ¦}ÅçÃÒ¡A¥H´î¤Öµ§»~¤Î²¨©¿¡C¥Î¹ê»Ú¦s¦bªº½sµ{»y¨¥¨Ó´y­zºâªk¡A´N¦³³o­Ó¦n³B¡FµM¦Ó§Y«K¦p¦¹¡A¨C¤@ºØ­pºâ¾÷»y¨¥¤]ÁÙ¬O¦U¦³¨ä¯Ê³´¡C§Ú¨Ï¥Î«Ü¦h¤H¯à¬ÝÀ´ªºC¥N½X¨Ó´y­z°ª¯Å»y¨¥³¡¤À¡A¦]¬°¥¦¥i¥Hª½±µ§â¾ã¼Æ»P¦ì¦ê¾Þ§@¼g¦b¤@°_¡A¦Ó¥B«Ü¦hC»y¨¥½sĶ¾¹³£¯à²£¥Í°ª½è¶qªº¥Ø¼Ð¥N½X¡C

object code¡A¤S¥s¡§¥Øªº½X¡¨¡A¬O½sĶ¾¹³B²z·½¥N½X¦Zªº²£ª«¡A¤@¯ë¥Ñ¾÷¾¹½X©Îªñ¤_¾÷¾¹»y¨¥ªº¥N½X²Õ¦¨¡C¦s©ñ¦¹Ãþ¥N½Xªº¤å¥ó¥s¥Ø¼Ð¤å¥ó(object code)¡A¤]¥s¤G¶i¨î¤å¥ó¡C¸Ô±¡°Ñ¨£¡Ghttps¡G//zhúPwikipediaúPorg/wiki/¥Ø¼Ð¥N½X¡C¡X¡XĶªÌª`

®Ñ¤¤°¸º¸¤]·|¥Î¨ì¾÷¾¹»y¨¥¡A¥¦­Ì³£¥H¡§¤T¦a§}®æ¦¡¡¨¥X²{¡A³o¼ËŪ°_¨Ó§ó¤è«K¡C¨ä¤¤ªº¶×½s»y¨¥¬Oµ§ªÌ°Ñ·Ó·í¤UªºRISC«ü¥O¶°µêºc¥X¨Óªº¡C

threeúQaddress format¡A§Ythree address code¡AÁY¼g¬°TAC©Î3AC¡A¤S¥s¡§¤T¦ì§}½X¡¨¡B¡§¤T¦a§}½X¡¨¡C¥¦§â³q±`ªººâ¦¡¡§¹Bºâµ²ªG=¾Þ§@¼Æ1 ¾Þ§@²Å ¾Þ§@¼Æ2¡¨¼g¦¨¡§¾Þ§@²Å ¾Þ§@¼Æ1¡A¾Þ§@¼Æ2¡A¹Bºâµ²ªG¡¨ªº§Î¦¡¡A¦]¨ä¤¤²o¯A3­ÓÅܶq(§Y¾Þ§@¼Æ1¡B¾Þ§@¼Æ2¡B¹Bºâµ²ªG)¦Ó±o¦W¡C¨Ò¦pz=x+y¥ÎTAC®æ¦¡¨Ó¼g´N¬Oadd x¡Ay¡Az¡C¸Ô±¡°Ñ¨£¡Ghttps¡G//enúPwikipediaúPorg/wiki/Three_address_code¡C¡X¡XĶªÌª`

RISC¡AReduced Instruction Set ComputingªºÁY¼g¡A¬O¤@ºØ³]­pCPUªº¼Ò¦¡¡A¸Ó³]­p«ä¸ôºë²¤F«ü¥O¼Æ¥Ø¤Î©w§}¤è¦¡¡A¨ÏCPUªº¨î§@§ó¬°®e©ö¡A¤]¦³§U¤_´£¤É¨ä¦}¦æ¯à¤O»P°õ¦æ®Ä²v¡C¨Ï¥Î¦¹ºØ«ü¥O¶°ªºCPU¥Ø«e¥D­nÀ³¥Î¤_´¼¯à¤â¾÷©M¥­ªO¹q¸£µ¥²¾°Ê³]³Æ¤W¡A»P¤§¬Û¹ïªº¬Ox86µ¥³B²z¾¹©Ò¥Îªº¡§´_Âø«ü¥O¶°¡¨(CISC¡ACªí¥ÜComplex)¡C¸Ô±¡°Ñ¨£¡Ghttps¡G//zhúPwikipediaúPorg/wiki/ºë²«ü¥O¶°¡C¡X¡XĶªÌª`

¤j®aÀ³¸ÓºÉ¶q½s¼g¨S¦³¤À¤äªº¥N½X(branchúQfree code)¡A¦]¬°¤À¤ä¥N½X·|©ìºC«Ü¦h¹q¸£ªº«ü¥OÀò¨ú³t«×¡A¦}ªý¤îCPU¦}µo°õ¦æ¡C¦¹¥~¡A¥¦ÁÙ·|§«Ãª¤@¨Ç½sĶ¾¹Àu¤Æ±¹¬Iûâûâ¡A¦p«ü¥O½Õ«×ûãûã¡B­«´_¤lªí¹F¦¡®ø°£ûäûä¡B±H¦s¾¹¤À°tûåûåµ¥¡C¤]´N¬O»¡¡A½sĶ¾¹Àu¤Æ¤j¬qªºÂ²³æ¥N½X­n¤ñÀu¤Æ«Ü¦h¤p¥N½X¶ôªº®ÄªG§ó¦n¡C

±`¨£ªº½sĶ¾¹Àu¤Æ§Þªk½Ð°Ñ¦Ò¡Ghttps¡G//enúPwikipediaúPorg/wiki/Category¡GCompiler_optimizations¡C¡X¡XĶªÌª`

instruction scheduling¡A¬O³q¹L«ü¥O¬y¤ô½u(instruction pipeline)§Þ³N´£¤É«ü¥O¦}µo°õ¦æ®ÄªGªºÀu¤Æ¤âªk¡C¸Ô±¡°Ñ¨£¡Ghttps¡G//enúPwikipediaúPorg/wiki/Instruction_scheduling¡C¡X¡XĶªÌª`

commoning¡A§Ycommon subexpression elimination(CSE)¡A¬O³q¹L®ø´î­«´_ªºªí¹F¦¡¨Ó´£¤É°õ¦æ³t«×ªºÀu¤Æ§Þ³N¡C¸Ô±¡°Ñ¨£¡Ghttps¡G//enúPwikipediaúPorg/wiki/Common_subexpression_elimination¡C¡X¡XĶªÌª`

register allocation¡A¸Ó§Þ³NÅý²³¦hÅܶq¦@¥Î¤@­ÓCPU±H¦s¾¹¡A¥HÀu¤Æ°õ¦æ³t«×¡C¸Ô±¡°Ñ¨£¡Ghttps¡G//enúPwikipediaúPorg/wiki/Register_allocation¡C¡X¡XĶªÌª`

¦¹¥~¡A½s½X®ÉÁÙÀ³¸Ó¦h¥Î¼Æ­È¸û¤pªº±`¶qûæûæ¡A¦h»P0¤ñ¸û(¤Ö»P«D0­È¤ñ¸û)¡AºÉ¶q¼g¥X©ö¤_¦}µo°õ¦æªº«ü¥O§Ç¦Cûçûç¡C¦pªG§ï¼g®Ñ¨½«Ü¦h¥N½X¡AÅý¥¦­Ì±q¤º¦s¤¤¬dªí¡A¨äµ²ªG·|§óºë½T¡AµM¦Óµ§ªÌ³q±`¤£´£³oºØ°µªk¡C¦]¬°»Pºâ³N«ü¥O¬Û¤ñ¡A±q¤º¦s¤¤¥[¸ü¼Æ¾Ú¤Ï¦Ó§ó¯Ó®É¡CÁö»¡¬dªíªkªº½T«Ü¹ê¥Î¡A¦ý¬O¤@¯ë¨Ó»¡³£¤ñ¸û¥F¨ý¡C·íµMÁÙ¦³¨Ç¯S¨Ò¤£Äݤ_¤W­z±¡ªp¡C

immediate value¡A¤]¥s¡§¥ß§Y­È¡¨¡C¡X¡XĶªÌª`

instructionúQlevel parallism¡AÁY¼g¬°ILP¡A·N¬°«ü¥O¯Å¦}¦æ«×¡A¥Î¤_«×¶q«ü¥O§Ç¦Cªº¦}µo°õ¦æµ{«×¡C¨Ò¦p¬Y¬q«ü¥O¦b«D¦}µo¤è¦¡¤U»Ý­n3­Ó®É¶¡³æ¦ì¨Ó°õ¦æ¡A¦Ó¦}µo°õ¦æ¥u»Ý2­Ó®É¶¡³æ¦ì¡A¨º¤\¨äILP´N¬O3/2¡C¸Ô±¡°Ñ¨£¡Ghttps¡G//enúPwikipediaúPorg/wiki/InstructionúQlevel_parallelism¡C®Ñ¤¤Á٥θӵüªí¥ÜCPU¦}µo°õ¦æ«ü¥Oªº¯à¤O¡C¡X¡XĶªÌª`

³Ì¦Z­n»¡ªº¬O¡A¥»®Ñ®Ñ¦W¥»®Ñ­^¤å®Ñ¦W¬°HackerûÐs Delight¡C¡X¡XĶªÌª`¤¤ªº¡§hacker¡¨¥Îªº¬O¥»·N¡A¤]´N¬O«üè°g¤_­pºâ¾÷ªº¤H¡C³oºØ¤H³ßÅw®³¹q¸£¶}µoÂI·sª±·N¨à¡A©Î¬O¥Î·s¼é¦Ó¦³³Ð·Nªº¿ìªk¨Ó¹ê²{­ì¦³ªº¥\¯à¡C¥L­Ì³£®¼·|¥Î¹q¸£¡A¦ý«o«Ü¥i¯à¤£¬O¤@¦W±M¾¹q¸£µ{§Ç­û©Î³]­p®v¡A³o¨Ç¹q¸£·¥«Èûßû߶}µo¥X¨ÓªºªF¦è¡A¦³¨Ç¦³¥Î¡A¦³¨Ç¥u¬Oª±ª±¦Ó¤w¡C»¡¨ì¦¹Ãþ¯ÂÄݪ±¼ÖªºÀ¸§@¡AÅý§Ú·Q°_«Ü¦h¸ê²`½sµ{²¼¤Í³£¼g¹L¤@¬q¤pµ{§Ç¡A¥¦¥i¥H§â¦Û¤v·Ó­ì¼Ë¥´¦L¥X¨Óûàûà¤ñ¤è»¡¡A¤U­±³o¬q¥ÎC»y¨¥¼gªºµ{§Ç¥N½X¡G

¥»®Ñ»y¹Ò¤¤ªº¡§hacker¡¨¥i²z¸Ñ¦¨¡§¹q¸£·¥«È¡¨¡B¡§µ{§Çª±®a¡¨¡B¡§½sµ{²¼¤Í¡¨¡B¡§½sµ{¹F¤H¡¨¡B¡§§Þ³Nµo¿N¤Í¡¨µ¥·N«ä¡A¥H«K»P®e©ö¤Þµoª[¸qªº¡§Àb«È¡¨¡B¡§¶Â«È¡¨µ¥³q«U¥sªk°Ï¤À¶}¡C¥»¨Óhacker«ü­pºâ¾÷§Þ³N¨g¼ö·R¦nªÌ¡A¦Ócracker«ü¯}Ãa­pºâ¾÷¦w¥þªº¤H¡A¦ý¦ZªÌªºµü¸q³vº¥«I»k¤F«eªÌ¡A¾É­Pcracker¡Bhacker¤Î¡§Àb«È¡B¶Â«È¡B©Ç«È¡B¼D«È¡¨µ¥Ä¶¦W¥þ³£¦¨¤F¡§­pºâ¾÷¦w¥þ¯}ÃaªÌ¡¨¡A¥Ohacker¤@µü³à¥¢¤F­ì·N¡C¸Ô±¡°Ñ¨£¡Ghttps¡G//zhúPwikipediaúPorg/wiki/Àb«È¡C¡X¡XĶªÌª`

main(){char*p="main(){char*p=%c%s%c¡F(void)printf(p¡A34¡Ap¡A34¡A10)¡F}%c"¡F(void)printf(p¡A34¡Ap¡A34¡A10)¡F}¡C³o¤~¬O§Ú¨Ï¥Î¡§hacker¡¨¤@µüªºªì°J¡A¦b®Ñ¨½¥i§O·Q§ä¨ì±Ð§A«ç¼Ë¤J«I¥L¤H¹q¸£ªº§âÀ¸®@¡C

­PÁÂ

­º¥ý­n·PÁÂBruce Shriver»PDennis Allison¨â¦ì¥ý¥Í¹ªÀy§Ú¼g§@¥»®Ñ¡AµM¦ZÁÙ­n¹ïIBM½Ñ¦ì¦P¤¯­P·N¡A°Ñ¦Ò¤åÄm¤¤¤]´£¨ì¤F¨ä¤¤¤@¨Ç¦P¨Æªº¦W¦r¡C¤×¨ä·PÁÂMartin E.Hopkins¥ý¥Í¡A¥L¥i¿×IBMªº¡§¬¡½sĶ¾¹¡¨(MrúPCompiler)¡CHopkins¥ý¥Í¦b½s½X¤u§@¤¤¤@µ·¤£ÎA¡A»{¯uÀu¤Æ¨C¤@­Ó´`Àô¡X¡X³oºØ·q·~ºë¯«²`²`·P¬V¤F§Ú¡C¥õ¿àAddisonúQWesley¦U¦ìµû¼f¡A¥»®Ñ¤º®e¦³¤F·¥¤j§ïÆ[¡C¥L­Ìªº©m¦Wµ§ªÌ¤j¦h¤£¤F¸Ñ¡A§Ú°ß¤@°O¦íªº¬O¤j¦W¹©¹©ªºGuy LúPSteele¡AJrúP¡C¦b50­¶®Ñµû¤¤¡AGuy¸É¥R¤F¤@¨Ç§Ú·í®É¨S¦³½Í¨ìªº·s°ÝÃD¡A¦p¦ì¤¸ªº¥´¶Ã»P´_­ì¡A¡§ºø¦Ï»P¤s¦Ï¤ÀÂ÷¾Þ§@¡¨(¤À¦Ïªk¡Asheep and goats operation)¡Aµ¥µ¥¡A¦Ó¥B¥L´£¥Xªº¤@¨Çºâªk¤]¤ñ§Ú­ì¨Ó¥Îªº§ó°ª©ú¡CGuy¬O­Ó«D±`¥J²Óªº¤H¡A¤ñ¤è»¡¡A§Ú´¿§â¤Q¤»¶i¨î¼ÆAAAAAAAAªº½è¦]¤l¤À¸Ñ¦¡¿ù¼g¬°2¡Ñ3¡Ñ17¡Ñ257¡Ñ65 537¡A¦Ó¥Lµo²{¨ä¤¤ªº3À³¸Ó¬O5¡C¦¹¥~¡A¥LÁÙ´£¤F¤@¨Ç¦®¦b§ïµ½¼g§@­·®æªº«Øij¡A¦}¥B±q¤£¦^Á׮Ѩ½ªº²Ó¸`°ÝÃD¡CŪªÌ­Yµo²{¤å¤¤¦³ºÃ¦ü¥L¤H®»¤M¤§³Bûáûá¡A¨º®£©È±oÂk¥\¤_Guy¤F¡C

­ì¤å¬°parallel prefix¡A·N¬°¡§¦}¦æ«e¸m¦¡ºâªk¡¨¡B¡§¥­¦æ«eºóºâªk¡¨¡A¬O¤@®M¤À²ÕÂk¦}§Î¦¡ªº³tºâ¬yµ{¡C¸Ô±¡°Ñ¨£¡Ghttps¡G//wwwúPwikipediaúPorg/wiki/Prefix_sum¡C§@ªÌ¦b¦¹³B¥H¤§¤ñ³ë¥L»PGuy¥|¤âÁp¼uªº¨Î¸Ü¡C¡X¡XĶªÌª`



H.S.Warren¡AJrúP

2012¦~6¤ë¤_¯Ã¬ù¦{¬ù§JÂí



¥»®Ñ­^¤åª©¬ÛÃö¸ê®Æ½Ð¬d¾\

www.HackersDelight.org
¤º®e²¤¶¡G

¬O²Ä¤@¥»«ÅºÙ¯àÁ¿¸Ñ­pºâ¾÷ºâªkÁô±â²Ó¸`ªº®Ñ¡A¦Ó¥BÁ¿±oÁÙ¯u¤£¿ù¡C§Úª¾¹Dªº¨C¤@±ø§Þ¥©®Ñ¨½³£´£¨ì¤F¡A¦Ó¥BÁÙÁ¿¤F¦n¦h¦n¦h§Ú¤£ª¾¹Dªº¡C¤£½×¬O¦b¶}µoµ{§Ç®w©Î½sĶ¾¹¡AÁÙ¬O¦b·¥¤O·j¨DÀu¶®ºâªk¡A¦¹®Ñ³£¥i¿×¤Ñ½ç¨}¥U¡AÀ³©ñ¦b°ª¼w¯Ç©ÒµÛ¡m­pºâ¾÷µ{§Ç³]­pÃÀ³N¡n¨º®M®Ñ®ÇÃä¡C¥»®Ñ²Ä¤@ª©¥Z¦L¦Zªº10¦~¶¡¡A¥¦¹ï§Ú¦bSun©MGoogleªº¤u§@¤j¦³»t¯q¡A¦Ó²Ä¤Gª©©Ò²K¥[·s¤º®e¥ç¥O§ÚÅå¸r¤£¤w¡C¡¨
¡X¡X Joshua Bloch

¡§ªì¬Ý¥»®Ñ®Ñ¦W®É¡A§Ú·Q¡A³o¬O±Ð¤H«ç¤\¤J«I­pºâ¾÷¨t²Îªº®Ñ¶Ü¡H¤£¤Ó¥i¯à§a¡C¶â¡A¨º´NªÖ©w¬O¤@¥»½sµ{¤p§Þ¥©ªº¶°ÀA¡C¬Ý¤F¤§¦Zµo²{¡A¨S¿ù¡A³o´N¬O¤@¥»½sµ{¯µÄy¡AµM¦Ó«o¬O¤@¥»¥]ù¸U¶Hªº¯µÄy¡C²Ä¤Gª©·s¼W¤F¨â­Ó¤j¥DÃD¡A¦}¥Î¼Æ¤Q­Ó¤p§Þ¥©Â×´I¤F¥»®Ñ¤º®e¡A¨ä¤¤¦³­Ó¤pµ´©Û¬O¦p¦ó¦b¤£·¸¥Xªº±¡ªp¤U¨D¨â¼Æ§¡­È¡A§Ú¼g¤G¤À¬d§äºâªk®Éª½±µ´N§â³o±ø®³¨Ó¥Î¤F¡C³o¯u¬O¥»¥Oºâªk·R¦nªÌ¶}ÃhºZŪªº®Ñ°Ú¡I¡¨
¡X¡X Guy Steele

¦b¥»®Ñ¤¤¡A§@ªÌµ¹§Ú­Ì±a¨Ó¤F¤@¤j§å·¥¬°»¤¤Hªºª¾ÃÑ¡A¨ä¤¤¥]¬A¦UºØ¸`¬Ùµ{§Ç¹B¦æ®É¶¡ªº§Þ¥©¡Bºâªk»P¬ªù¡C¾Ç²ß¤F³o¨Ç§Þ³N¡Aµ{§Ç­û´N¥i¼g¥XÀu¶®°ª®Äªº³n¥ó¡A¦P®ÉÁÙ¯à¬}±x¨ä¤¤­ì²z¡C³o¨Ç§Þ³N·¥¬°¹ê¥Î¡A¦Ó¥B¨ä°ÝÃD¥»¨­¤S«D±`¦³½ì¡A¦³®É¬Æ¦Ü¹³²qÁ¼¸ÑÁ¼¤@¯ë¡A»Ý­n©_«ä§®·Q¤~¦æ¡C²¦Ó¨¥¤§¡A³n¥ó¶}µoªÌ¬Ý¨ì³o¨Ç§ï¶iµ{§Ç®Ä²vªº§®­p¤§¦Z¡A©wµM¤j³ß¡C

¥»®Ñ¸û²Ä1ª©¼W¸É¤F¤j¶q¤º®e
·s¼W¤F´`Àô¤¾§E®ÕÅç¡]CRC¡^¤@³¹¡A¨ä¤¤Á¿¸Ñ¤F±`¥ÎªºCRC-32®ÕÅç½X
·s¼W¤FªÈ¿ù½X¡]ECC¡^¤@³¹¡A¨ä¤¤Á¿¸Ñ¤Fº~©ú½X
¸Ô¸Ñ¤F°£¼Æ¬°±`¼Æªº¾ã¼Æ°£ªk¡A¼W¸É¤F¶È§t²¾¦ì¾Þ§@©M¥[ªk¾Þ§@ªººâªk
¤£­pºâ°Ó¦Óª½±µ¨D§E¼Æ
ÂX¥R¤F»PºØ¸s­p¼Æ©M«e¾É0­p¼Æ¦³Ãöªºª¾ÃÑ
¼Æ²ÕºØ¸s­p¼Æ
°õ¦æÀ£ÁY»PÂX®i¾Þ§@ªº·sºâªk
LRUºâªk
¯BÂI¼Æ»P¾ã¼Æ¤¬¤Æ
¦ôºâ¯BÂI¼Æªº¥­¤è®Ú­Ë¼Æ
¤@¨t¦CÂ÷´²¨ç¼Æ¹Ï¹³
¦U³¹§¡°t¦³²ßÃD»P°Ñ¦Òµª®×
¥Ø¿ý¡G

ĶªÌ§Ç

§Ç¡]²Ä1ª©§Ç¡^

«e¨¥

²Ä1³¹·§­z

1.1°Oªk

1.2«ü¥O¶°»P°õ¦æ®É¶¡¼Ò«¬

1.3²ßÃD

²Ä2³¹°ò¦ª¾ÃÑ

2.1¾Þ§@³Ì¥kÃ䪺¦ì¤¸

2.1.1¼w¼¯®Ú©w«ßªº±À½×

2.1.2±q¥k¦Ü¥ªªº¥i­pºâ©Ê´ú¸Õ

2.1.3¦ì¾Þ§@ªº·s¦¡¥Îªk

2.2µ²¦XÅÞ¿è¾Þ§@ªº¥[´î¹Bºâ

2.3ÅÞ¿è»Pºâ³Nªí¹F¦¡¤¤ªº¤£µ¥¦¡

2.4µ´¹ï­È¨ç¼Æ

2.5¨â¼Æ¥­§¡­È

2.6²Å¸¹ÂX®i

2.7¥ÎµL²Å¸¹¥k²¾¼ÒÀÀ±a²Å¸¹¥k²¾¾Þ§@

2.8²Å¸¹¨ç¼Æ

2.9¤T­È¤ñ¸û¨ç¼Æ

2.10²Å¸¹¶Ç»¼¨ç¼Æ

2.11±N­È¬°0ªº¦ì¬q¸Ñ½X¬°2ªºn¦¸¤è

2.12¤ñ¸û¿×µü

2.12.1§Q¥Î¶i¦ì¼Ð§Ó¨D¤ñ¸û¿×µü

2.12.2­pºâ¾÷¦p¦ó³]¸m¤ñ¸û¿×µü

2.13·¸¥XÀË´ú

2.13.1±a²Å¸¹ªº¥[´îªk

2.13.2­pºâ¾÷°õ¦æ±a²Å¸¹¼Æªº¥[´îªk®É¦p¦ó³]¸m·¸¥X¼Ð§Ó

2.13.3µL²Å¸¹¼Æªº¥[´îªk

2.13.4­¼ªk

2.13.5°£ªk

2.14¥[ªk¡B´îªk»P­¼ªkªº¯S©º½X

2.15´`Àô²¾¦ì

2.16Âù¦rªø¥[´îªk

2.17Âù¦rªø²¾¦ì

2.18¦h¦r¸`¥[´îªk»P¨Dµ´¹ï­È

2.19doz¡Bmax¡Bmin¨ç¼Æ

2.20¤¬´«±H¦s¾¹¤¤ªº­È

2.20.1¥æ´«±H¦s¾¹¤¤¬ÛÀ³ªº¦ì¬q

2.20.2¥æ´«¦P¤@±H¦s¾¹¤ºªº¨â­Ó¦ì¬q

2.20.3¦³±ø¥óªº¥æ´«

2.21¦b¨â­Ó©Î¨â­Ó¥H¤Wªº­È¤§¶¡¤Á´«

2.22¥¬º¸¨ç¼Æ¤À¸Ñ¤½¦¡

2.23¹ê²{16ºØ¤G¤¸¥¬º¸¾Þ§@

2.24²ßÃD

²Ä3³¹2ªº¾­Ãä¬É

3.1±N¼Æ­È¤W½Õ/¤U½Õ¬°2ªº¤wª¾¦¸¾­ªº­¿¼Æ

3.2½Õ¾ã¨ì¤W¤@­Ó/¤U¤@­Ó2ªº¾­

3.2.1¦V¤UªÙ¤J

3.2.2¦V¤WªÙ¤J

3.3§PÂ_¨ú­È­S³ò¬O§_¸ó¶V¤F2ªº¾­Ãä¬É

3.4²ßÃD

²Ä4³¹ºâ³NÃä¬É

4.1ÀË´ú¾ã¼ÆÃä¬É

4.2³q¹L¥[´îªk¶Ç¼½Ãä¬É

4.3³q¹LÅÞ¿è¾Þ§@¶Ç¼½Ãä¬É

4.4²ßÃD

²Ä5³¹¦ì­p¼Æ

5.1²Î­p­È¬°¡§1¡¨ªº¦ì¤¸¼Æ

5.1.1¨â­Ó¦r²ÕºØ¸s­p¼Æªº©M»P®t

5.1.2¤ñ¸û¨â­Ó¦r²ÕªººØ¸s­p¼Æ

5.1.3²Î­p¼Æ²Õ¤¤­È¬°¡§1¡¨ªº¦ì¤¸¼Æ

5.1.4À³¥Î

5.2©_°¸©Ê

5.2.1­pºâ¦r²Õªº©_°¸©Ê

5.2.2±Nªí¥Ü©_°¸©Êªº¦ì¤¸²K¥[¨ì7¦ì¶q¤¤

5.2.3À³¥Î

5.3«e¾É0­p¼Æ

5.3.1¯BÂI¼Æºâªk

5.3.2¤ñ¸û¨â­Ó¦r²Õ«e¾É0ªº­Ó¼Æ

5.3.3»P¹ï¼Æ¨ç¼ÆªºÃö¨t

5.3.4À³¥Î

5.4¦Zºó0­p¼Æ

5.5²ßÃD

²Ä6³¹¦b¦r²Õ¤¤·j¯Á¦ì¦ê

6.1´M§ä­º­Ó­È¬°0ªº¦r¸`

6.1.10­È¦r¸`¦ì¸m¨ç¼Æªº

¤@¨Ç²³æ±À¼s

6.1.2·j¯Áµ¹©w­S³ò¤ºªº­È

6.2´M§ä­º­Óµ¹©wªø«×ªº¥þ1¦ì¦ê

6.3´M§ä³Ìªø¥þ1¦ì¦ê

6.4´M§ä³Ìµu¥þ1¦ì¦ê

6.5²ßÃD

²Ä7³¹­«±Æ¦ì¤¸»P¦r¸`

7.1¤ÏÂà¦ì¤¸»P¦r¸`

7.1.1¦ì¤¸¤ÏÂàºâªkªº±À¼s

7.1.2©_¯Sªº¦ì¤¸¤ÏÂàºâªk

7.1.3»¼¼W¤ÏÂà¦Zªº¾ã¼Æ

7.2¶Ã§Ç±Æ¦C¦ì¤¸

7.3Âà¸m¦ì¯x°}

7.4À£ÁYºâªk(¼s¸q´£¨úºâªk)

7.4.1¥Î¡§´¡¤J¡¨¡B¡§´£¨ú¡¨«ü¥O¹ê²{À£ÁY¾Þ§@

7.4.2¦V¥ªÀ£ÁY

7.5®i¶}ºâªk(¼s¸q´¡¤Jºâªk)

7.6À£ÁY»P®i¶}¾Þ§@ªºµw¥óºâªk

7.6.1À£ÁY

7.6.2®i¶}

7.7³q¥Î¸m´«ºâªk¤Î¤À¦Ï¾Þ§@

7.8­«±Æ»P¤U¼ÐÅÜ´«

7.9LRUºâªk

7.10²ßÃD

²Ä8³¹­¼ªk

8.1¦h¦r­¼ªk

8.264¦ì¿nªº°ªÅv­«³¡¤À

8.3µL²Å¸¹»P±a²Å¸¹ªº°ªÅv­«¿n¤¬¤Æ

8.4»P±`¼Æ¬Û­¼

8.5²ßÃD

²Ä9³¹¾ã¼Æ°£ªk

9.1¹w³Æª¾ÃÑ

9.2¦h¦r°£ªk

9.3¥Î±a²Å¸¹°£ªk­pºâµL²Å¸¹µu°£ªk

9.3.1¥Î±a²Å¸¹ªø°£ªk­pºâµL²Å¸¹µu°£ªk

9.3.2¥Î±a²Å¸¹µu°£ªk­pºâµL²Å¸¹µu°£ªk

9.4µL²Å¸¹ªø°£ªk

9.4.1¥Îµw¥ó¹ê²{²¾¦ì¦}¬Û´îºâªk

9.4.2¥Îµu°£ªk¹ê²{µL²Å¸¹ªø°£ªk

9.5¥Îªø°£ªk¹ê²{Âù¦r°£ªk

9.5.1µL²Å¸¹Âù¦r°£ªk

9.5.2±a²Å¸¹Âù¦r°£ªk

9.6²ßÃD

²Ä10³¹°£¼Æ¬°±`¶qªº¾ã¼Æ°£ªk

10.1°£¼Æ¬°2ªº¤wª¾¦¸¾­ªº±a²Å¸¹°£ªk

10.2¨D»P2ªº¤wª¾¦¸¾­¬Û°£ªº±a²Å¸¹§E¼Æ

10.3¦b°£¼Æ¤£¬O2ªº¾­®É¨D±a²Å¸¹°£ªk¤Î§E¼Æ

10.3.1°£¥H3

10.3.2°£¥H5

10.3.3°£¥H7

10.4°£¼Æ¤j¤_µ¥¤_2ªº±a²Å¸¹°£ªk

10.4.1ºâªk

10.4.2ºâªk¥i¦æ©ÊÃÒ©ú

10.4.3ÃÒ©ú­¼¿n¥¿½T

10.5°£¼Æ¤p¤_µ¥¤_-2ªº±a²Å¸¹°£ªk

10.6±N°£ªkºâªk¶°¦¨¦Ü½sĶ¾¹¤¤

10.7¨ä¥L¥DÃD

10.7.1°ß¤@©Ê

10.7.2¥i¥Í¦¨³Ì¨Îµ{§Ç¥N½Xªº°£¼Æ

10.8µL²Å¸¹°£ªk

10.8.1°£¼Æ¬°3ªºµL²Å¸¹°£ªk

10.8.2°£¼Æ¬°7ªºµL²Å¸¹°£ªk

10.9°£¼Æ¤j¤_µ¥¤_1ªºµL²Å¸¹°£ªk

10.9.1µL²Å¸¹ª©ºâªk

10.9.2ºâªk¥i¦æ©ÊÃÒ©ú

10.9.3ÃÒ©úµL²Å¸¹ª©ºâªkªº­¼¿n¥¿½T

10.10±NµL²Å¸¹°£ªkºâªk¶°¦¨¦Ü½sĶ¾¹¤¤

10.11»PµL²Å¸¹°£ªk¬ÛÃöªº¨ä¥L¸ÜÃD

10.11.1¥i¥Í¦¨³Ì¨ÎµL²Å¸¹°£ªk¥N½Xªº°£¼Æ

10.11.2±a²Å¸¹­¼ªk»PµL²Å¸¹­¼ªk¤¬¤Æ

10.11.3§ó²³æªºµL²Å¸¹°£ªk¥Í¦¨ºâªk

10.12§E¼Æ«D­t¦¡°£ªk»P¦V¤U¨ú¾ã¦¡°£ªkªº¾A¥Î©Ê

10.13Ãþ¦üºâªk

10.14¯«©_¼Æ¦r¥Ü¨Ò

10.15¥ÎPython»y¨¥½s¼gªºÂ²³æ¥N½X

10.16°£¼Æ¬°±`¶qªººë½T°£ªk

10.16.1¥Î¼Ú´X¨½±oºâªk­pºâ­¼ªk°f¤¸¯À

10.16.2¥Î¤û¹yªk­pºâ­¼ªk°f¤¸¯À

10.16.3­¼ªk°f¤¸¯À¥Ü¨Ò

10.17ÀË´ú°£¥H±`¼Æ¦Z¬O§_§E0

10.17.1µL²Å¸¹°£ªk

10.17.2°£¼Æ¤j¤_µ¥¤_2ªº±a²Å¸¹°£ªk

10.18¤£¨Ï¥ÎMultiply High«ü¥Oªº°£ªkºâªk

10.18.1µL²Å¸¹°£ªk

10.18.2±a²Å¸¹°£ªk

10.19¦X­p¦U¼Æ¦ì¨D§E¼Æ

10.19.1¨DµL²Å¸¹°£ªkªº§E¼Æ

10.19.2¨D±a²Å¸¹°£ªkªº§E¼Æ

10.20¥Î­¼ªk¤Î¥k²¾¦ì¨D§E¼Æ

10.20.1¨DµL²Å¸¹°£ªkªº§E¼Æ

10.20.2¨D±a²Å¸¹°£ªkªº§E¼Æ

10.21±N´¶³q°£ªk¤Æ¬°ºë½T°£ªk

10.22­p®É´ú¸Õ

10.23¥Î¹q¸ô­pºâ°£¼Æ¬°3ªº°£ªk

10.24²ßÃD

²Ä11³¹ªìµ¥¨ç¼Æ

11.1¾ã¼Æ¥­¤è®Ú

11.1.1¥Î¤û¹yªk¶}¥­¤è

11.1.2¤G¤À¬d§ä

11.1.3µw¥óºâªk

11.2¾ã¼Æ¥ß¤è®Ú

11.3¨D¾ã¼Æ¾­

11.3.1¥Înªº¤G¶i¨î¤À¸Ñ¦¡­pºâxn

11.3.2¥ÎFortran»y¨¥­pºâ2n

11.4¾ã¼Æ¹ï¼Æ

11.4.1¥H2¬°©³ªº¾ã¼Æ¹ï¼Æ

11.4.2¥H10¬°©³ªº¾ã¼Æ¹ï¼Æ

11.5²ßÃD

²Ä12³¹¥H¯S®í­È¬°©³ªº¼Æ¨î

12.1¥H-2¬°©³ªº¼Æ¨î

12.2¥H-1+i¬°©³ªº¼Æ¨î

12.3¥H¨ä¥L¼Æ¬°©³ªº¼Æ¨î

12.4³Ì°ª®Äªº©³¬O¤°¤\

12.5²ßÃD

²Ä13³¹®æ¹p½X

13.1²¤¶

13.2»¼¼W®æ¹p½X¾ã¼Æ

13.3­t¤G¶i¨î®æ¹p½X

13.4®æ¹p½X²¥v¤ÎÀ³¥Î

13.5²ßÃD

²Ä14³¹´`Àô¤¾§E®ÕÅç

14.1²¤¶

14.2²z½×

14.3¹ê²{

14.3.1µw¥ó¹ê²{

14.3.2³n¥ó¹ê²{

14.4²ßÃD

²Ä15³¹ªÈ¿ù½X

15.1²¤¶

15.2º~©ú½X

15.2.1SECúQDED½X

15.2.2®ÕÅç¦ì­Ó¼Æªº³Ì¤p­È

15.2.3¤pµ²

15.3¾A¥Î¤_32¦ì«H®§ªº³n¥óSECúQDEDºâªk

15.4¼s¸q¿ù»~­×¥¿

15.4.1º~©ú¶ZÂ÷

15.4.2½s½X½×ªº¥D­n°ÝÃD

15.4.3nºû²y­±

15.5²ßÃD

²Ä16³¹§Æº¸§B¯S¦±½u

16.1¥Í¦¨§Æº¸§B¯S¦±½uªº»¼Âkºâªk

16.2®Ú¾Ú§Æº¸§B¯S¦±½u¤W±q°_ÂI¨ì¬YÂIªº³~¸g¶ZÂ÷¨D¨ä§¤¼Ð

16.3®Ú¾Ú§Æº¸§B¯S¦±½u¤Wªº§¤¼Ð¨D±q°_ÂI¨ì¬YÂIªº³~¸g¶ZÂ÷

16.4»¼¼W§Æº¸§B¯S¦±½u¤WÂIªº§¤¼Ð

16.5«D»¼Âkªº¦±½u¥Í¦¨ºâªk

16.6¨ä¥LªÅ¶¡¶ñ¥R¦±½u

16.7À³¥Î

16.8²ßÃD

²Ä17³¹¯BÂI¼Æ

17.1IEEE®æ¦¡

17.2¾ã¼Æ»P¯BÂI¼Æ¤¬¤Æ

17.3¨Ï¥Î¾ã¼Æ¾Þ§@¤ñ¸û¯BÂI¼Æ¤j¤p

17.4¦ôºâ¥­¤è®Ú­Ë¼Æ

17.5«e¾É¼Æ¦ìªº¤À¥¬

17.6Âø¶µ¼Æ­Èªí

17.7²ßÃD

²Ä18³¹¯À¼Æ¤½¦¡

18.1²¤¶

18.2Willans¤½¦¡

18.2.1Willans²Ä¤G¤½¦¡

18.2.2Willans²Ä¤T¤½¦¡

18.2.3Willans²Ä¥|¤½¦¡

18.3Wormell¤½¦¡

18.4¥Î¤½¦¡¨Ó´y­z¨ä¥LÃø¸Ñªº¨ç¼Æ

18.5²ßÃD

°Ñ¦Òµª®×

ªþ¿ýA4¦ì­pºâ¾÷ºâ³N¹Bºâªí

ªþ¿ýB¤û¹yªk

ªþ¿ýC¦UºØÂ÷´²¨ç¼Æ¹Ï¹³

°Ñ¦Ò¤åÄm
§Ç¡G