单词 | 为什么程序员会把万圣节当作圣诞节 |
释义 | 为什么程序员会把万圣节当作圣诞节 我们都知道10月31日是万圣节前夜。可是,如果有人在那一天庆祝圣诞节(你没看错,不是12月25日),那他一定是个程序员,理由是程序员们可以认为:Oct 31=Dec 25(Oct是英文10月的缩写,Dec是12月的缩写)。你一定惊讶极了,程序员居然会认为10月31日等于12月25日,难道他们可以穿越时间? 十六进制乘法表 其实这里的Oct是指八进制,Dec是指十进制。也就是八进制的31等于十进制的25。这种情况下,O31=3×8+1=D25是成立的。 原来如此。可是,为什么程序员要用八进制,还有十六进制呢?有什么数是十进制不能表示的? 计算机内部使用二进制计数,因为二进制只有0和1两个符号,对应于晶体管的“开”和“关”两种状态。但对于人来说,二进制的表述过于冗长,难以辨识和记忆。举例来说,十进制计数系统中的4660,用二进制表示就是1001000110100;二进制状态下的1011000110100,用十进制表示就是5684。所以,为了便于处理这些数字,程序员需要一种进制,既容易辨识又能够方便地和二进制进行转换,这就是八进制和十六进制了。因为8和16是2的幂(8是2的三次方,16是2的四次方),所以每个八进制数位刚好对应于3个二进制数位,每个十六进制数位刚好对应于4个二进制数位。例如,二进制100的八进制表示是4,二进制110的八进制表示是6。因此,二进制110100的八进制表示就是64。同理,二进制0100的十六进制表示是4,二进制0011的十六进制表示是3,二进制110100的十六进制(注意前面补0)是34。而十进制和二进制的转换则没有那么直接和方便。 在《C专家编程》一书中讲述了程序员把万圣节当做圣诞节的故事 除此之外,二进制数中如果有一位数改变,那么它的十进制数往往很多位都会变化。而对应的八进制和十六进制则只有相应的数位发生改变。对于程序员来说,这个特性是尤为重要的。编程实践中,我们常常需要用位掩码(即一个二进制数字)来表示一个状态,并且通过设置或清空某个二进制位来改变状态。在这些情形中,使用八进制和十六进制比十进制更为直观和方便。当然,在其他一些场合,程序员也使用十进制。 进制转换。二进制数中一个比特位的变化导致十进制数中许多数位都发生改变,而对应的八进制数和十六进制数则只有相应数位发生改变 在现实生活中,程序员当然不会把万圣节当做圣诞节了,之所以他们认为Oct 31=Dec 25,是因为他们是一群每天与计算机“说话”的人。(伍勇) |
随便看 |
|
科学时代收录了15440条科普词条,基本涵盖了常见科普常识及英语词汇的翻译,是科学学习和研究的有利工具。