返回介绍

Base

发布于 2025-01-31 22:20:46 字数 3615 浏览 0 评论 0 收藏 0

记载数量

想要记载一个数量,最直观的方式是:一个符号、重複数次。

♥
♦♦
☁☁☁
★★★★★★★★★★★★★★★★★★

第一种技术:分堆

一个个数,太花时间。为了节省时间,可以尝试分堆。最常见的分堆方式,是十个一堆。如果有很多堆,那麽十堆再合成一大堆;如果有很多大堆,那麽十大堆再合成一大大堆;以此类推。

hard way:
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

easy way:
★★★★★★★★★★  ★★★★★★★★★★  ★ ★
★★★★★★★★★★
★★★★★★★★★★  ★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★  ★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★

以此类推的过程,我们习惯採用固定数量,这个数量称做“底数 Base”。例如上例的底数就是十。

然而也有例外。例如时间:六十秒一分、六十分一时、二十四时一日,底数不是固定数量。

第二个技术:命名

一个个数,太花时间。为了节省时间,可以替每种数量取不一样的名字;换句话说,用不一样的符号代替每种数量。

长长一串数量,变成短短一个符号,人生充满欢乐!

第三个技术:位数

然而,越多符号,越难背诵。你能想像背诵一百种符号代替一百种数量吗?符号还是少点好。

解法是同时使用第一个技术和第二个技术,令符号数量等于底数。例如底数是十,可以使用 0123456789 等十个符号。当数量大于等于十,十个形成一堆,记载在左边一点的位置,变成 10。当数量累积十堆,十堆形成一大堆,记载在更左边一点的位置,变成 100。这是地球上最流行的记载方式。

除了替每一种数量取名字,有些语言还会替每一种数量级取名字,让数字之间穿插数量级符号。这是题外话。

132
英文:one hundred thirty-two      (hundred 是数量级的符号)
中文:一百三十二                  (百、十是数量级的符号)

选择底数

我们可以选择自己喜欢的底数。底数不能是零、不能是一。底数是二,称做“二进位”,使用 01 两个符号。底数是三,称作“三进位”,使用 012 三个符号。底数是十六,称做“十六进位”,使用 0123456789ABCDEF 十六个符号。底数超过三十六,那麽必须额外引入一些符号,才够用。

底数写于数字的右下角,用括号包住。

101₍₂₎   二进位,数字是 101
73F₍₁₆₎  十六进位,数字是 73F

同样的数量,使用不同的底数,往往得到不同的数字。

★★★★★★★★★★★★★★★★★★  10010₍₂₎
★★★★★★★★★★★★★★★★★★  18₍₁₀₎
★★★★★★★★★★★★★★★★★★  12₍₁₆₎

同样的数字,使用不同的底数,往往得到不同的数量。

11₍₂₎   ★★★
11₍₁₀₎  ★★★★★★★★★★★
11₍₁₆₎  ★★★★★★★★★★★★★★★★★

选定底数,把数量变成数字。

选定底数,把数字变成数量。

C 语言当中的 atoi() 字串转整数函式,其实就是“选定底数 10,把数字变成数量”。

改变底数(进制转换)

10010₍₂₎ = ?₍₁₆₎

令数量维持相等,给定原数字、原底数、新底数,求新数字。

演算法和程式码交给读者思考!

UVa 343 344 355 377 389 446 448 575 594 619 636 10019 10469 10473 11005 11121

延伸阅读:以多项式作为模型

一个数字可以改写成一个多项式。

10010₍₂₎ ---> 1x⁴ + 0x³ + 0x² + 1x¹ + 0x⁰  (let x = 2)
18₍₁₀₎   ---> 1x¹ + 8x⁰  (let x = 10)
73F₍₁₆₎ ---> 7x² + 3x¹ + 15x⁰  (let x = 16)

以多项式当作模型之后,“选定底数,把数字变成数量”就变成了“x 代入底数”,其演算法正是“ Horner's Rule ”。

数字与底数,在数学家眼中,可以藉由多项式一以贯之。多项式的用途实在很广。

Fibonacci Base

Fibonacci Sequence / Fibonacci Number

1 1 2 3 5 8 13 ...,大家应该都懂,所以就不介绍了。

http://www.geeksforgeeks.org/check-number-fibonacci-number/

UVa 495 11582

Fibonacci Base(Zeckendorf's Theorem)

大家做做题目、找找资料应该就懂了,所以就不介绍了。

UVa 763 948

Roman Numerals

http://en.wikipedia.org/wiki/Roman_numerals

网路已有详细资料,此处不再赘述,仅提供练习题。

UVa 759 11616 12397 11787

Calendar

春雨惊春清穀天,夏满芒夏暑相连,        

秋处露秋寒霜降,冬雪雪冬小大寒。《二十四节气歌》

曆法

http://en.wikipedia.org/wiki/Calendar

网路已有详细资料,此处不再赘述,仅提供练习题。

1752 年 9 月曾经调整过日曆。

UVa 300 602 10070 11356

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文