编程数学读书笔记-- 第一章计数的启发

第一章 计数的启发

对我们视为理所当然的事情,反思其背后的逻辑,并提炼出相应的方法论。对问题的理解,实现由“形而下”到“形而上”的跨越。

1.1 从n进制到按位计数

用n进制表示x的操作是:将x表示成对基 { . . , n − 2 , n − 1 , n 0 , n 1 , n 2 , . . . } \{.., n^{-2},n^{-1}, n^0, n^1, n^2, ...\} {..,n2,n1,n0,n1,n2,...}的线性组合。

其中,引出一个问题,如何理解 n i n^i ni

  • 常见的理解是 i个n相乘。
  • 但是这种理解无法推广到 i ≤ 0 i\leq 0 i0的情况。

为了解决这个尴尬的问题,换个思路理解 n i n^i ni
即, n i n^i ni n i + 1 n^{i+1} ni+1 1 n \frac{1}{n} n1倍。也就是 n i = n i + 1 × 1 n n^{i} = n^{i+1}\times \frac{1}{n} ni=ni+1×n1
也就是通过使用相邻两项之间的递推关系来理解 n i n^i ni。使用邻项之间的递推关系,在程序设计中非常常见。

而按位计数指的就是,数中的每一位上的数字对应的就是相应基的系数。例如:
( 707 ) 10 (707)_{10} (707)10
表示的意思是,

707 = 7 × 1 0 2 + 0 × 1 0 1 + 7 × 1 0 0 707 = 7\times 10^2 +0\times 10^1 + 7\times 10^0 707=7×102+0×101+7×100

1.2 数字0的作用:为按位计数服务

小学的数学教育肯定会告诉学生,0是人类最伟大的发明。但是,如果对其继续追问,为什么伟大?估计想要说的非常清楚,还是有一丢丢难度的。

由按位计数中0的作用。作者给出的答案是:

  • 占位。 ( 707 ) 10 (707)_{10} (707)10中间的0表示,707中没有 1 0 1 10^1 101成分。但是因为按位计数,数字的每一位都是有意义的,所以这里的0没法省略。
  • 统一模式。在基的部分, n 0 n^0 n0,正好是 { . . , n − 2 , n − 1 , n 0 , n 1 , n 2 , . . . } \{.., n^{-2},n^{-1}, n^0, n^1, n^2, ...\} {..,n2,n1,n0,n1,n2,...}中每个元素都保持 n i n^i ni的模式。

我的理解是: 0 就是为了按位计数服务的。如果没有按位计数的想法,0的存在也就失去了大部分的意义。

1.3 对按位计数的深入思考

人类在解决计数所面临的核心问题是,如何更简单的计数?

先看看按位计数为什么更简单?

将问题具体化,对于数“十二”, 用罗马数字“XII”,比用“IIIIIIIIIIII”方便,而12比罗马数字方便。如何看待按位计数12这种方便?

**将大问题分解为多个相互独立的小问题。**这个再按位计数的12上的体就是,将数“十二”分解为两个十进制位来表示:十位与个位,每一位上都使用0~9十个数来表示。然后,两个进制位上数字组合起来表示的就是“十二”。在程序设计中,经常会使用的“分治”就是这种思想。

但是随着社会发展,人类接触的计数的数字越来越大,而按位计数在表示大数方面,有很多不便。例如:很难一眼区分 1000000与100000的大小关系。于是就有了,我们小学课本中所学的科学计数法。 1 0 6 10^6 106 1 0 5 10^5 105

继续追问,在大数计数上,科学计数法为什么比按位计数更简单?

回到1000000与100000,光是比较零的个数就可以区分它俩的大小关系。科学计数法就是着眼于此。也就是说,数零的个数是区分大数的核心关切。

书中将科学计数法命名为“指数计数法”。

1.4 小节

按位计数的历史发展进程:从结绳计数一般的符号计数,到不同进制下的按位计数,再到指数法计数。这个过程能给我们分析和解决大规模问题的启示是:对于规模较大的问题使用“分治”的思想,即分成多个相互独立的小问题,各个击破。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值