版权声明:本文基于cainiao_参考23333原创文章Charles Petzold 修改整理英文原版和英文原版,遵循CC 4.0 BY-SA请附上以下来源链接和本声明进行版权协议转载。
本文链接:https://blog.csdn.net/cg1985cg/article/details/107959696
cainiao_23333原文链接:https://blog.csdn.net/weixin_41876385/article/details/99736268
版:2012年10月第一版 2020年4月第25次印刷
P73 第4行 享改为亨 P105 倒数第2行 W上面少了一条横线 P167 第12行 非或门改为或非门 P167 第13行 Q反改为Q非 P177 倒数第6行,原英文版Just below the center of the page, the sentence "The outputs of the second stage are inputs to the first stage." should read "The outputs of thefirststage are inputs to thesecondstage." Thanks to Jonathan Gold for reporting this error.根据这一点,中文版的这个地方也应该改为:。 P178 第一行不同于英文原文,所以翻译更好: 英文原文:This changes the first flip-flop stage because the inverted Clock inputs is 1. But the second stage remains unchanged because the uninverted Clock input is 0. P194 第5行 除数改为被除数(注:事实上,255用16进制表示FF,因此,0-255数字除以16,商业为高,余数为低,可获得2位16进制数字。书中的这句话可以完全删除。请参阅英文原版。作者没有这句话,应由翻译作者自己添加) 英文原文:To calculate those two digits, divide the number by 16 to get the quotient and the remainder. Let's use an earlier example—the decimal number 182. P198 倒数第五行,应该在前面加,否则 英文原文:Further changes to the Data input don't affect the outputs until the Clock input goes to 1 again. P208 在上图中,数据输入和写作操作端应该交换位置,以下两个RAM中的W和DI也要交换位置,否则不能独立写入某个位置RAM数据。(经 指出) P222 倒数第九行,完成这些工作,算得上万事俱备,只欠东风。……事实上,英文原版中没有一切都准备好了,只欠东风。加入后,译者会觉得事情刚刚准备好,还没有开始做。事实上,只剩下最后一步让加法器停下来,所以这句话可以删除。如果你真的想改变它,你可以改变它基本上是成功的。 英文原文:And after everything is done, we want the automated adder to simply stop so that the contents of the RAM array can be examined. P231 倒数第二行表Subtract的c和t之间还有一个空间 P234 倒数第5行,TANSTAAFL,天下没有免费的午餐,英文原文说是There Ain't No Such Thing As A Free Lunch. 怀疑英文原文也有问题,语法的正确表达应为:There's no such thing as a free lunch。 P240 第一行应改为”。英文原文:The 16-bit address that's latched from the RAM array is an input to both the 2-to-1 Selector (which allows this address to be an address input to the RAM array) and the 16 bit counter for the Set It function.(经 指出) P244 第三行,这个字节和地址001Eh存储值加起来,得到的值恰好是Halt但同时,它也是一个有效的数字,应该翻译成:如果用原翻译,你会认为加起来的值恰好是Halt指令,容易产生误解。 英文原文:This byte is added to the value at location 001Eh. This happends to be the Halt instruction, but of course it's also a valid number. P259 倒数第二段的最后一句没什么大问题。为了更接近原文的意思,更容易理解,可以加一个字改为:继电器计算机虽然叫电机计算机,但是真空管是第一台电子计算机的基础。 英文原文:While relay machinese were known as electromechanical computers, vacuum tubes were the basis of the first electornic computers. P261 倒数第二段,讲香农,一片题为……,应该是”。 P266 第5行,Geoffrey Dummer,应翻译为:,不是杰里佛。 P271 第二行,只是我在这里用的是异或门,应该改为”。 英文原文:except that I used NOR gates. P280 倒数第三行,多了一个逗号 P287 倒数第一行,以下是8080逻辑操作指令,表中没有算术操作指令(前面列出)。 P290 倒数第九行,所有的高和低都反了(? 英文原文(也有问题?):The lowest bit (shifted out of the bottom) becomes the highest bit (shifted into the top) and also determines the state of the Carry flag. P295 第一段应为:LXI指令一个字节。上表中的最后一个LXI该指令赋予栈指针一个特殊值。通常,下面的指令作为微处理器复位后首先执行的指令之一。 英文原文:The LXI instruction a byte. In addition, the last LXI instruction in the preceding table is used to set the Stack Pointer to a particular value. It's for this instruction to be one of the first instructions that a microprocessor executes after being restarted. P295 倒数第4行,DAD指令通常用于计算存储器地址,只有进位标志符CF有影响。 英文原文:The DAD instruction is normally used for calculating memory addresses. is the Carry Flag. P311 表中12对应的字符,身份不明?Who Are You",如果要翻译,下面的文本也是英文,统一翻译成”吧。 P317 第三行,以下是这33个控制字符……翻译版本表已经在上面了,所以应该改为:这33个控制字符……”。 P317 倒数第一行,换页符不是12h,是0Ch。英文原文似乎也错了。 P348 两个代码有问题。AND指令要改成ANI。NibbleToAscii的AI指令要放到第一行CPI的前面。这一修改是根据英文原文勘误: In the code examples, the CMP instruction should be CPI. The two ADD instructions should be ADI. The AND instruction should be ANI. That ANI instruction should actually be the first instruction of the NibbleToAscii subroutine. Thanks to Erik Larismaa for reporting these errors. P349 倒数第5行,下画线改为下划线。 P355 最后1行中间0D 0A 33 30 39 31 31 0D 0A(原来第一个31位置错写成3) P361 第3-4行翻译有问题,改为:QDOS最终更名为86-DOS,并由微软公司授权。 英文原文:QDOS was eventually renamed 86-DOS and licensed by Microsoft Corporation. P390 倒数第2行,将for语句会一次为a赋值中的一次改为依次 //下面一处错误为cainiao_23333原文中提及,2020年4月第25次印刷版本中没有出现 //P390 第2行JEPG应改为JPEG 注:JPEG是Joint Photographic Experts Group(联合图像专家组)的缩写 P417 第3行MPEG 应为 Moving Picture Experts Group(该组织官方网址 https://mpeg.chiariglione.org/)
英文原版的勘误:https://www.charlespetzold.com/code/
Errata - Hardcover Edition
In the formula in the second bulleted item, the exponent of the 2 should be -126 rather than -127:
- (-1)^s × 0.f × 2^(-126)
Thanks to Erik Larismaa for reporting this error.
Ambiguities and Clarifications
In the second full paragraph, the last sentence is: "The receiver sees the short blink and the long blink and knows it's an A." Actually, the receiver doesn't know what letter is being sent until the pause that indicates the end of the letter. Thanks to Larry Smith for reporting this flaw.
In the first paragraph I state: "SOS isn't an abbreviation for anything -- it's simply an easy-to-remember Morse code sequence." Many people are under the mistaken impression that SOS stands for "Save Our Ship" or "Save Our Souls." However, this meaning appears to be spurious; I can find no evidence that the letters SOS were chosen to stand for anything. For example, the Oxford English Dictionary, 2nd edition, volume XVI, page 34 says of SOS: "The letters s, o, and s, chosen because easily transmitted in Morse code."
The discussion of Braille was not meant to be exhaustive. In particular, Grade 2 Braille also includes 76 short-form words, such as "imm" for "immediate". These include "ab" for "about" (so it would require only two symbols rather than the 4 shown on page 19) and "Brl" for "Braille," implicitly including a capital. The example of Louis Braille's name in Braille would thus require only 3 symbols for the last name rather than the 8 shown on page 20. Thanks to Ed Godfrey for this information.
The first paragraph indicates that the negative terminal of a battery is called an anode and the positive terminal is called the cathode. Some readers have questioned whether this is correct, since it seems opposite from other uses of the words anode and cathode. The terminology used in was taken from:
Linden, David, ed. Handbook of Batteries, 2nd edition. New York, NY: McGraw-Hill, Inc., 1995, page 1.3.
The perspective inside the battery corresponds more closely to other uses of the words.
The penultimate paragraph contains the statement "the current (I) is 1.5 divided by a large number." The current is not 1.5. The voltage is. The statement might be better written as: "the current (I) equals 1.5 volts divided by a large number." Thanks to Habib Heydarian for reporting this ambiguity.
In the last paragraph the statement occurs: "when adding two Roman numerals, you simply combine all the symbols from both numbers and then simplify the result using just a few rules." The passage should have mentioned that this only works well when Roman numerals are written without using the subtraction principle, for example, without using IV to mean 4. The subtraction principle was a comparatively modern enhancement to Roman numeration. Thanks to Larry Smith for reporting this omission.
The last paragraph states: "The x86 family continued in 1985 with the 32-bit 386 chip, in 1989 with the 486, and beginning in 1993, with the Intel Pentium line..." Somehow the 186 and 286 were omitted. The sentence should begin: "The x86 family continued in 1982 with the 186 and 286 chips, in 1985 with the 32-bit 386 chip..." Thanks to Luis Alonso Ramos and Larry Smith for reporting these omissions.
About a third of the way down the page appears the statement "If e equals 255 and f equals 0, the number is positive or negative infinity, depending on the sign s." This statement implies that infinity is a number, which it is not. The statement might be better phrased "If eequals 255 and f equals 0, the value is positive or negative infinity, depending on the sign s." Thanks to Jonathan Gold for pointing this out.
In the last full paragraph, the sentence occurs: "The print statement -- like many ALGOL statements (but not begin or end) -- must be followed by a semicolon." Actually, a semicolon is not required before the end statement, although it doesn't hurt to have one. Thanks to Larry Smith for clarifying this.
The first paragraph contains the sentence: "Java programs must be compiled, but the result of the compilation isn't machine code. It's instead Java byte codes." That's the usual case. However, Java source code can be compiled into machine code if a platform-independent binary is not required. Thanks to Larry Smith for clarifying this.