现在,我们都知道如何数数。但是你能用二进制或十六进制来计数吗?不同数系的加减乘除怎么样?
我们理所当然地认为我们使用的是以10为基数的(十进制)数字系统,除非我们遇到不同的数字系统(如二进制或十六进制),否则我们可能甚至不会意识到除了以10为基数之外的任何数字系统甚至是存在的或可能的。然而,事实是,在我们的口语数字系统中,以10为基数的使用是完全任意的,可能仅仅是因为我们有10个手指(用于计数),其他数字系统也同样有效。如果我们有12个手指,那么我们可能都使用12进制的数字系统。
基数10(或基数10)意味着每个数字有10个可能的值:
0,1,2,3,4,5,6,7,8,9一旦我们用完了一个数字的可能值,我们就添加另一个数字:
等等。。
再说一次,我们认为所有这些都是理所当然的,因为我们从很小的时候就已经学会了。然而,一旦我们理解了这是如何工作的基本机制,那么其他的数字系统也是同样合理和有效的就变得很清楚了。
二进制的
计算机内部的开关(晶体管)只能有两种状态:开或关。这意味着在计算机世界(0,1)中每个数字只有2个可能的值,因此计算机需要使用基数为2的(二进制)数字系统。当以二进制计数时,同样的规则也适用–一旦我们用完了一个数字的可能值,我们就添加另一个数字:
这里有一个快速的对比来帮助澄清:
十六进制的
十六进制使用基数16,这意味着每个数字有16个可能的值:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F以下是这三者的对比,有助于澄清:
十六进制在计算机世界中很流行,因为它可以方便地与计算机处理的二进制一起翻译。每个十六进制数字转换成4个二进制数字:
前缀
计算机内部一般也是8位的倍数(8位= 1字节),所以每个字节可以方便地用2个十六进制数字表示。对于工程师来说,这比长的二进制数字序列更容易处理,但是计算机内部仍然是以2为基数的二进制数字系统。在编程语言中,数字系统的类型通常用前缀来标识,例如在C编程语言中:
请注意,前导零不是强制性的(0b00000001等同于0b1,0x01等同于0x1),但它们通常用于提高上下文的可读性。
总之,一旦理解了数制原理,不同的数制就很容易理解了。你可能会争辩说十进制比二进制好,因为表示任何特定的数需要更少的数字,但是照此推理,十六进制会比十进制好。事实是,我们喜欢十进制只是因为这是我们所习惯的,也是其他人所习惯的。
审核编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !