第2章 数字系统 (计算机科学导论)

目标

  • 理解数字系统的概念

  • 分清非位置化和位置化数字系统

  • 描述十进制系统(以10为底)

  • 描述二进制系统(以2为底)

  • 描述十六进制系统(以16为底)

  • 描述八进制系统(以8为底)

  • 将二进制,八进制或十六进制数字转换为十进制系统

  • 将十进制数字转换为二进制,八进制或十六进制系统

  • 将二进制和八进制数字相互转换

  • 将二进制和十六进制数字相互转换

  • 查找在各种系统中代表特定数值所需要的数码

2.1 引言

什么是数字系统(数码系统)?

用独特的符号来表示一个数字的系统。

不同的系统中,一个数字有不同的表示方法,如:(2A)16 和 (52)8 都是同样的数量(42)10,但是他们的表示截然不同。如同使用英语单词horse和法语单词cheval来指代“马”一样。

任何语言中的符号(字符)数量都是有限的。我们需要重复并组合它们来创建单词。数字也是一样:我们使用有限的数字符号(数码)来表示数字,这意味着数码需要重复使用。

数字系统可以分为:位置化系统非位置化系统重点是位置化系统

2.2 位置化数字系统

位置化数字系统:数字中符号所占据的位置决定了其表示的值。

在该系统中,数字这样表示:±(Sk-1…S2S1S0 . S-1S-2…S-k)b

它的值是:n = ± Sk-1bk-1+ … + S1× b1 + S0×b0 + S-1×b-1 + S-2×b-2 + … S-k×b-k

S:一套符号集

b底(或基数),它等于S符号集合中的符号总数

±:表示该数字可正可负

2.2.1 十进制系统(以10为底)

在该系统中,底 b = 10,我们用10个符号来表示一个数。

符号集S = {0,1,2,3,4,5,6,7,8,9},该系统中的符号常被称为十进制数码。

在十进制系统中,数字写为:
±(Sk-1…S2S1S0. S-1S-2…S-k)10

为了简便,我们通常省略(),底和正号。如,+(552.23)10写成 552.23

1.整数

十进制系统中,我们把整数表示为 :±Sk-1…S2S1S0
其值计算为:N = ± Sk-1×10k-1+ Sk-2×10k-2+ … S2× 10 2+ S1× 10 1 + S0× 10 0

其中Sk是一个数码,b = 10 是底,k是数码的数量

另一种在数字系统中显示一个整数的方法是使用位置量,即用10的幂表示十进制数字
在这里插入图片描述
在这里插入图片描述
最大值
有时我们可以用数码 k 表示十进制整数的最大值。Nmax = 10k-1。
例如:如果k = 5, 那么最大值 Nmax = 105-1 = 99999。

2.实数
十进制系统中,实数(带有小数部分的数字)也是我们熟悉的
在这里插入图片描述

二进制系统(以2为底)

在二进制系统中,底 b = 2 并且我们用两个符号表示一个数,即 S = {0 , 1}
该系统中的符号常被称为二进制数码位(位数码)

数据和程序是以二进制模式(即位串)存储于计算机中的。这是因为计算机由电子开关制成,它们仅有开和关两种状态。1位表示这两种状态之一,0位表示另一种状态。

1.整数
在这里插入图片描述
在这里插入图片描述
最大值
在这里插入图片描述
2. 实数
在这里插入图片描述

2.2.3 十六进制系统(以16为底)

十六进制系统与八进制系统出现前的问题

  • 二进制系统用于存储计算机数据,但是不适合在计算机外部表示数字。因为和十进制数相比,二进制符号太长了。
  • 十进制不适合存储在计算机内,且十进制和二进制没有什么显然的关系,转换也不快捷方便。

解决办法:发明了两种位置化系统,十六进制八进制

十六进制系统
b = 16
S = { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , A ,B , C , D , E , F }
注: A ,B ,C ,D ,E ,F (不区分大小写) 分别等于10 ,11 , 12 , 13 , 14 , 15。该系统中的符号常被称为十六进制数码

在这里插入图片描述
在这里插入图片描述

2.2.4 八进制系统(以8为底)

在这里插入图片描述

2.2.5 4种位置化数字系统的小结

在这里插入图片描述

2.2.6 转换

1. 其它进制到十进制的转换

做法:数码乘以其在源系统中的位置量求和
在这里插入图片描述
在这里插入图片描述

2.十进制到其他进制的转换

(1)转换整数部分

做法: 使用连除。下面是这一做法的UML图(不了解UML可以阅读本专栏的名词解释博客

在这里插入图片描述
具体做法

  1. 先创建一个空目标。
  2. 然后用源除以底得到商和余数。
  3. 余数插入目标的左边。
  4. 商变为新的源
  5. 重复2~4直到商为0
    在这里插入图片描述

举例说明:
例1:将十进制35转换为二进制数。结果为 35 = (100011)2
在这里插入图片描述
例2: 将十进制126转换为八进制数。结果为 126 = (176)8
在这里插入图片描述
例3:将十进制126转换为十六进制数。结果126 = (7E)16
在这里插入图片描述

(2) 转换小数部分

做法: 连乘法。

  1. 先创建一个空目标
  2. 乘源并得到结果
  3. 结果的整数部分插入目标的右边
  4. 小数部分成为新的源
  5. 重复2~4直到源为0保留位数足够

在这里插入图片描述
在这里插入图片描述
例1: 将十进制数0.625转换为二进制数。结果为0.625 = (0.101)2
在这里插入图片描述
例2: 将0.634转换为八进制且精确到4位小数。结果是0.634 = (0.5044)8
在这里插入图片描述
例3: 将十进制数178.6转换为十六进制数且精确到1位小数。结果是178.6 = (B2.9)16
在这里插入图片描述

小技巧

  • 把小的十进制数(通常小于256)转换为二进制数有个变通的方法,把这个数分解为下列二进制对应数的和
    在这里插入图片描述
    使用上表转换165为二进制数(10100101)2
    在这里插入图片描述
  • 当分母是2的幂次时,用类似的方法可以吧十进制小数转为二进制
    在这里插入图片描述
    使用上表转换27/64为二进制数(0.011011)2
    在这里插入图片描述
    由于1/2的和1/16的缺失,我们用0代替
    在这里插入图片描述
(3)数码的数量

十进制转换为其它进制后数码的数量: K = 「logbN」

  • 「x」表示大于或等于x的最小整数,也称为x的高限
  • N是该整数的十进制值

举例:十进制数234在4个系统中的位数
a:十进制: K = 「log10234」= 「2.37」= 3
b:二进制:K = 「log2234」= 「7.8」= 8 ,234 = (11101010)2 ,正确。
c: 八进制:K = 「log8234」= 「2.62」= 3, 234 = (352)8 ,正确。
d:十六进制:K = 「log16234」= 「1.96」= 2 ,234 = (EA)16 ,正确

3. 二进制 — 十六进制的转换

二进制和十六进制间可以很容易的相互转换
原因:二进制中的4位恰好是十六进制中的1位。
在这里插入图片描述

例1:二进制数(10011100010)2转换为十六进制数。
解: 步骤:

  1. 将二进制数拆为4位一组的形式:100/1110/0010。(最左边一组可能不满四位)
  2. 每组转换为相应的十六进制数。(4E2)16

例2: 十六进制数(24C)16转为二进制数
**步骤:**将每个十六进制数码转换4位一组的二进制数。2—> 0010,4—>0100,C—> 1100, 结果是(001001001100)2

4.二进制—八进制的转换

同十六进制一样,八进制适合与二进制相互转换。二进制3位是八进制的一位
在这里插入图片描述
转换方法与十六进制相同

5. 八进制—十六进制的转换

方法: 使用二进制系统作为中介
步骤:

  • . 八进制到十六进制。先将八进制转为二进制,然后转为十六进制
  • 十六进制到八进制。先将十六进制转为二进制再到八进制
    在这里插入图片描述

2.3 非位置化系统

非位置化系统:仍然使用有限的数字符号,每个符号有一个值,但是符号所占用的位置与其值无关(每个符号的值是固定的),其值为所有符号表示的值相加
典型代表为:罗马数字系统

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值