龙空技术网

较个真:“10”怎么读?真的读作“十”吗

中科院物理所 753

前言:

目前大家对“不能用123来表示的是”大概比较关心,同学们都需要了解一些“不能用123来表示的是”的相关资讯。那么小编同时在网上网罗了一些关于“不能用123来表示的是””的相关内容,希望同学们能喜欢,看官们一起来了解一下吧!

在直面标题中的问题之前,先思考一个问题,什么是记数?

很简单,就是用某种符号把数量记下来嘛。它所涉及的一套规则叫记数系统(numeral system),也称为记数法。

比如,用A代表第一个数,往后每增加一个,就依次用B,C,······,Z代表,若继续增加,那就用AA,AB,AC,······,ZZ,AAA等等来代表了。用过Excel表的人都知道,它的列编号所采用的就是这种记数法。

再比如计算机中采用的二进制(binary),用0代表无,用1代表第一个数,往后每增加一个,就依次用10,11,100,101,110等代表。

而最通行的所谓“十进制”,英文名decimalism, 它的做法是:

用0代表无,用1代表第一个数,往后每增加一个依次用2,3,······,9代表,接下来若继续增加,那就依次是10,11,12,······这些。

被称作“N进制”的记数法还有很多,例如三进制(ternary),八进制(octal),十六进制(hexadecimal)等。实际上,任何非零整数进制都存在,当然包括一进制,它叫unary numeral system。

先声明下,“进制”这个说法是中文特有的,强调记数中“逢N进1”的规则,但实际上这并不是记数法本身的要求。关于这一点,本文后面会讲到。

现在我们先来看,这些记数法背后有什么共同的道理呢?

为了搞清楚这个问题,我们不妨从人类最简单的记数法讲起。

想象你穿越到10万年前,假设那时的你幸运的还是一个人,你现在负责记录你们部落猎物的数量,你该怎么做呢?

原始人用棍棒记数

没错,用棍棒来记数!一根棍棒代表一个猎物,每增加一个猎物就增加一根棍棒。但这样工作量太大,如果打的猎物太多,棍棒不够用了,怎么办?

“奈何姓万”的故事

聪明的你马上想到:能不能用有限的棍棒来表示任意数呢?

没错,你这灵光一闪,就代表人类开始思考抽象的记数问题了!

棍棒,或各种兽骨等物件,有各种不同的形状,若将它们看作一个个不同符号,那么,有限个不同形状的物件就构成了一个有限符号集。从这里面取出任意个符号(可重复),它们的每个排列就代表一个数。

原始人的记数工具

可是,问题来了,这些符号的排列表示数的规则是什么呢?

这就是记数的核心问题了 !

为了更清晰地阐述,我们先明确三个概念。

第一个概念,用来记数的符号——数字(digit),也叫数位符。不仅包括阿拉伯数字,各种字母也可用作数字,常见的如英文大写字母。要注意区分数字与数,数(number)由数字排列而成,例如“101”和“AA”都是数,单个数字本身也是一个数。

第二个概念,数位符构成的集合,我们称之为数位集(digit set)。例如前面提到的第一种记数,它的数位集是26个大写英文字母的集合。二进制的数位集是{0,1,2},十进制的数位集是{0,1,2,3,···,9}。

第三个概念,数字符号与整数值之间的对应关系,叫整数数值函数,用 表示,它的定义域是数位集,而它的值域是整数。

需要指出的是,这里的“整数”二字是形式上的、与具体的记数法无关的整数。就像本文前面提到的三种记数时说的那样,它是指按“从第一个数开始,每增加一个就加一”的规则来计数(counting)时,所得到的那个抽象的整数。

讲到这里,也要顺便说下,计数与记数是不同的。计数是一种重复增一或减一的行为,它对应的结果是存在于大脑中天然抽象数值;而记数则是数的某种记录方式,是表示数的符号系统给出的结果。

当然,在实际中,这个所谓的“抽象整数”一般总是用我们熟悉的十进制来兑现表示的,毕竟抽象的数只存在于大脑中,无法直接表示出来嘛!

对于前面提到的Excel表的列记数中,函数 是全部英文大写字母与等量个整数之间的一一映射。例如

而对一般的“N进制”记数法来说,若数字的值就是它作为一个数(number)时的值,则 是一个恒等函数(identity function),因此可用字符 直接替代 ,例如二进制,八进制,十进制都是如此。

但N超过10的“N进制”,其数位集包含一些其他字符,例如十六进制的数位集为{0,1,2,3,···,9,A,B,C,D,E,F},故十六进制的数值函数为

三个概念讲完了,现在来看,用数位符怎么表示数?

若干个数位符(可重复)的一个排列就表示一个数,我们称之为记数numeration)。一个排列中有几个数位符,则这个数就是几位数。

一个简单的例子,十进制下的数字串“2045”代表的数值(value)为

若这个数字串是八进制的话,那它的值为 算出来就是1061。

显然,这里的值是用十进制表示的,既然数值应该是与任何记数法无关的抽象计数结果,这并不是必须的。但十进制是所有人最熟悉的记数表示,所以就用十进制了。后面凡说到数值,也都默认用十进制表示。

根据这两个例子,相信读者能看出,某种b进制记数法下的一个字符排列 代表一个整数,其值为 如果引入小数点到字符排列中,则上述记数法可推广到小数,例如b进制下 代表的数值为 例如,8进制下的0.124的值为 这种数的表示具有递归(recursion)的特点,以整数为例即

据此递归性质,当一个数的首位是0时,由于 ,这表明 因此数最左边的0是多余的。考虑到这一点,有些人习惯在记录整数位只是单个零的小数时,可忽略那个零,例如将“0.123”直接写作“.123”。

上式还透露一个有趣的事实是,对0这个数,按上述规则,它自身也可以被拿掉,这就导致 右边是空的?没错!这正是0的意义——它代表什么也没有。

好了,以上就是最常见的记数法的规则。

我们看到,N进制数位集中并不包含数N对应的字符,例如二进制中没有2,三进制中没有3,八进制中没有8。所以,若把二进制说成2进制,把八进制说成8进制,就不够严谨了。

其实,英语对此也是不失严谨的,各个“N进制”的名称中都避免出现对应的数字,例如二进制叫binary,八进制叫octal,等等。

N进制中对应的N的那个数,因为已经超出数位集本身的范围,需要用1和0的排列来表示。

二进制中的10代表数位符1和0的一个排列,它读作“one zero”或“一零”,八进制中也如此,而十进制中的10也一样是如此!

也就是说,“10”一定不是“十”的对应的数位符——数位符必须是单个字符嘛!它的真实身份是字符集中的1和0的一个排列,应读作“一零”,而非“十”。

你可能会说:“10”在其他进制中的确不是“十”,但在十进制中不正好就是“十”吗?既然如此,那读作“十”不正好吗?

对大多数人来说,这么做的确无可厚非。

但是你知道,“十”既然是一个汉语的单音节语素,它应该对应单个字符,将其对应一个数字的排列“10”是不太妥当的。

你可能会问:按你这说的,十进制下的“20”读作“二十”不可以,应读作“二零”?

那倒不是这样,在十进制下,“20”的数值的确就是“二十”,而且因为它有两个音节,不会被误以为是一个数位符,所以这么读是完全没问题的。

其实十进制下的“10”,你若读作“一十”,那比读作“十”更合适。

这么说吧,面对一个由数位符排列形成的数,你可以有两种读法。

第一种是当字符复读机,直接念数位符。例如,“1020”就读“一零二零”,管它是什么进制的数,反正总不会错。虽然这么做有点机器般的冷酷感觉,但这也许是大多数搞计算机的人最惬意的读法。

第二种是按照具体的进制,准确地读出它作为一个抽象天然数所具有的真实值。例如十进制下,“10”读作“十”,八进制下的“10”读作“八”。

第二种方法虽然美丽,但当你面对一个非十进制的数时,习惯十进制的你,需要快速的读出它的值可不那么容易哦!

即使是熟悉的十进制,面对一长串数字,坦白讲,笔者有时也会读错。更别说听写英语数了,要是一个个念字符就好了。

这个你可能用得着

实际上,第二种方法不再是单纯记数了,而是计数——给出天然抽象数的真实值。在前面提到的记数系统中的整数数值函数就是干这件事,但好在它只需要干很少次——数位集的长度对应的次数。

显然,对一个懒惰的码农来说,他当然会毫不犹豫地选择第一种方案。

我很懒,但我的代码可靠!

当然,若你觉得没必要纠结这些细节,也没关系,因为在你坚持把“10”读作“十”时,应该不会有人和你抬杠的。

至此,关于“N进制”记数法,我们讲完了。

但大家有没有意识到,我们熟知的“逢N进1”的规则似乎被忽略了?

的确,但本就该如此!

因为“逢N进1”这件事是当你计数(不是记数)时,为了得到正确的记数,你需要做的事,它与记数规则本身没什么关系。

前面说过,所谓计数,简单的说,就是在数数时不断加一减一。

对N进制的数来说,当对末位数字是N-1的数加1时,末位要变成0,而倒数第二位则要增1,这就是末位的进位;若倒数第二位增1之前也是N-1,则同样也要进位,直到抵达某个小于N-1的数字,进位停止。

虽然常见的记数法都满足这个规律,但若看Excel表中列的记数法,因为它的数位集中不含0,所以它并不是按这种“逢N进1”的规则来记数的,例如Z后面是AA而非A0,这是怎么回事呢?

这个问题涉及另一种类型的记数法,叫做双射bijective)记数法。而我们常见的十进制属于标准(standard)记数法,除此之外,还有一种叫平衡(balanced)记数法。

在弄懂这些不同类型的记数法之后,你一定会对记数问题有更深入的理解,例如你会理解“一进制”为什么是可以存在的,并能理解各种奇异的记数法存在的合理性,包括负二进制,Π进制,2i进制等等。

同时,你还会发现,“逢N进1”并不是记数法本身要求的。

虽然所有记数法的英文名称中并无“进位”之义,但在中文里,所有记数法的名称都具有“x进制”的形式,个中缘由,笔者没有细究。

好了,关于记数法,就先讲到这里吧。

参考文献


END

转载内容仅代表作者观点

不代表中科院物理所立场

如需转载请联系原公众号

来源:物含妙理

编辑:花卷


标签: #不能用123来表示的是