欢迎光临散文网 会员登陆 & 注册

计算机从业-起始篇 | 第2章.计算机科学导论之【数字系统】学习笔记

2023-04-06 11:25 作者:全栈工程师修炼指南  | 我要投稿

B站关注「全栈工程师修炼指南点我,点我 UP主

设为「⭐️ 星标」带你从基础入门 到 全栈实践 再到 放弃学习

涉及 网络安全运维、应用开发、物联网IOT、学习路径 、个人感悟 等知识分享。

希望各位看友多多支持【关注、点赞、评论、收藏、投币】,助力每一个梦想。

本章目录:

计算机科学导论学习笔记

第 2 部分 数据的表示和运算

2.数字系统

  • 2.1 位置化系统

  • 2.2 进制系统转换

    • (1) R 进制系统的表示 (R 可为 二、八、十、十六)

    • (2) R 进制间相互转换

  • 2.1 任意进制转换为十进制

  • 2.2 十进制转换为其他进制

  • 2.3 二进制转八进制、十六进制

  • 2.4 数码的数量

  • 2.3 非位置化数字系统

第 2 部分 数据的表示和运算

描述:该部分包括第234章,我们分别进行如下学习。

  • 2章讨论了数字系统,数量如何能使用符号来表示。

  • 3章讨论了不同的数据如何存储在计算机中。

  • 4章讨论了一些基本的算术运算与位(逻辑)运算。

首发地址https://mp.weixin.qq.com/s/RkQHKYM-b57CBlr553WZeg


2.数字系统

什么是数字系统?

用独特的符号(数码)来表示 一个数字 , 在不同的系统中,一个数字有不同的表示方法,使用有限的数字符号来表示数字,所以数码需要重复使用。

例如,(2A)16和(52)8都是指同样的数量(42)10,但是他们的表示截然不同。

常见的数字系统,阿拉伯数字系统 (0-9),罗马数字系统 (I I I I I I IV V VI VII .....).

数字系统分类: 主要分为两类分部是位置化系统(主要讲解)非位置化系统(简单提及)

2.1 位置化系统

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

其中,S是一套符号集,b是底(或基数)等于S符号集中的符号总数,其中S1和Sk是代表分数部分或整个数字的符号,+、- 表示数字为正或者负。

2.2 进制系统转换

描述: 计算机由于其组成由成千上万个晶体管组成,通过其开/关完成或记录各项操作,则计算机只能识别 0 和 1,所以计算机底层识别通常是二进制的数据。

所以在讨论学习位置化数字系统前,我们需要针对各进制系统的表示与转换做一个学习(此基础知识非常重要)

(1) R 进制系统的表示 (R 可为 二、八、十、十六)

描述:即在计算机数字系统常用进制系统是二进制 (Binary)、八进制(Octal)、十进制(Decimal)、十六进制(Hexadecimal),其原则为逢R进一。

二进制(Binary):源于拉丁词根bini(二),它只有 0 和 1 两个数表示,常用下标2或者B表示,例如:数值 3 的二进制表示为 (11)2 或者 11B,计算机中数据通常是以二进制模式(串)存储与计算机中执行.

八进制(Octal):源于拉丁词octo (八),由 0 ~ 7 八个数表示,常用下标8或者O表示,例如:数值 8 的八进制表示为 (10)8 或者 10O.

十进制(Decimal):源于拉丁词 decem (十) ,由 0 ~ 9 十个数表示,常用下标10或D表示,例如:数值 10 的十进制表示为 (10)10 或者 10D ,该进制适合人类阅读理解.

十六进制(Hexadecimal):源于希腊词根hex (六) 和 decem(十),由 0 ~ 9 A ~ E (分别等于 10~15) 十六个数表示,常用下标10或H表示,例如:数值 30 的十进制表示为 (1E)16  或者 1EH 。

此处以人类方便理解的十进制系统(以10为底)为例,进行讲解在整数、位置量、最大值、实数相关概念

  • 整数:即没有小数部分的整型数字。

  • 位置量:即用底(或者基数)的幂运算进行表示。例如,10的幂(10^0 , 10^1 , ~ , 10^(k-1))

  • 最大值:即使用数字K来表示十进制整数的最大值位数。例如,当k为5位时,其Nmax = 105 - 1 = 99 999

  • 实数:即小数点后的部分数字,在十进制中小数点(.)是用于分割整数和小数部分的。

十进制系统(以10为底)示例演示:


为了方便比较,此处再以计算机常用的二进制系统(以2为底)进行整数与实数进行讲解,可以如下图所示中得到计算的相关表达式,相比较于十进制只是将基数进行改变了,所以说八进制与十六进制的计算便不展开说明了。

二进制系统(以2为底)示例演示:


温馨提示: 计算机存储正负数的方式是不同的。(后续会有介绍)

(2) R 进制间相互转换

最常用的方式就是按权展开或者是 8421码快速进行进制的转换。

例如,将 (123)10 以按权方式展开。

2.1 任意进制转换为十进制

其它进制转换为十进制是简单而迅速的,将数码乘以其在源系统中的位置量并求和便得到十进制中的数.

示例演示:


2.2 十进制转换为其他进制

将十进制转换到其他等值的其他进制,需要两个过程即整数部分小数部分

  • 整数部分:在进行整数部分的转换可使用连除法。

例如,将 (58)10 转换为二进制的方法,此处采用除积倒取余(连除)法(也适于八进制、十六转换只是将连除的除数为基数),进行连除以2得到商和余数,当然日常使用8421码更为简单与二进制互换,此处主要讲解的是方式方法而已。

  • 小数部分:在进行小数部分的转换可使用连乘法,此处需要非常注意某些考试常常考带小数的转换。

快速将十进制(通常小于256)为二进制数间的互相转换方法。

例如,将 (111010)2 转换为十进制的方法(位权 与 8421码),将展开的位权进行相加,其结果为 32 + 16 + 8 + 2 = (58)10,应用此方法可以快速进行 十进制与二进制间的互换

由上表可知,根据十进制对等的值排列这些分数,由于1/2 与 1/16缺失,我们使用了0代替,所以其二进制结果为 (0.011011)2


2.3 二进制转八进制、十六进制

我们能轻松将数字从二进制转换到八进制,反之亦然。这是因为在这两个底之间存在一种关系:二进制中的3位恰好是八进制中的1位。

例如,将(111010)2 转换为八进制方法: 从右往左起每逢三位二进制转1位八进制,当不足三位的在最左边添0补齐,反之八转二,每一位八进制转换为三位二进制位表示,其结果为(72)8。

我们能轻松将数字从二进制转换到十六进制,反之亦然。这是因为在这两个底之间存在一种关系:二进制中的4位恰好是十六进制中的1位。

例如,将(111010)2 转换为十六进制方法: 从右往左起每逢四位二进制转1位十六进制,当不足四位的在最左边添0补齐,反之十六转二,每一位十六进制转换为四位二进制位表示,其结果为(31)16。

温馨提示:如果需要将数字从八进制转换到十六进制,我们可以使用二进制系统作为临时中介系统。


2.4 数码的数量

在进行十进制转换为其他系统进制时我们可能需要知道数码的数量,我们可以通过 k=logbN 的关系(k 是以b为底N的对数,N = b^k)进行计算,其 中b为基数(底数)、N为该数值的整数的十进制。

例如,我可以找到十进制数 234 转换为 2、8、10、16进制中所占的对应位数。

  • 十进制 k= log10234 = 2.37 = 3 位数

  • 二进制 k= log2234 = 7.8 = 8 位数,即 234 = (1110 1010)2

  • 八进制 k= log8234 = 2.62 = 3 位数 ,即 234 = (352)8

  • 十六进制 k= log16234 = 1.96 = 2 位数,即 234 = (EA)16

在从一个底装换为另外一个转换中,我们需要知道源系统数码的最大数量(b1^k-1, 其中b1是源数码基数,使用k个数码),意味着目标系统拥有的最大数是( b2^x - 1 ,其中 b2是目标数码基数,使用x个数码来装载源系统的值),因此其关系是 b2^x - 1 ≥ b1^k-1 (b2^x ≥ b1^k ),其表达式为 x ≥ k * (logb1 / logb2) 。

例如,找出二进制(目标数码)数码最小数,用于存储一个最大的6个数的十进制数(源目标数码)。

即k=6, b1=10, b2=2 , 即 x = 6 *(log10 / log2) = 6 * ( 1 / 0.30103 ) = 20,即我们需要20位二进制数(1 048 575)来存放6位10进制数码最大值(999 999)。

2.3 非位置化数字系统

非位置化数字系统仍然是使用有限的数字符号,每个符号对应一个值,其所在的位置通常与其值无关,因为每个符号值都是固定的

为了求得该数字的值,可以把所有符号表示的值进行相加,但是需要遵循特定法则将符号值进行相加。

  • 大值 ≥ 小值 ,其大值在前,小值在后是直接相加即可, 例如 VII = 5 + 1 + 1

  • 大值>小值 ,其小值在前,大值在后时用大值减去小值,例如 IV = 5 - 1

  • 当 S1 > 10 * S2,则符号S2不能在符号S1之前,例如 I 和 V 不能在C之前,因为 100 ≥ 10 * 1 以及 100 ≥ 10 * 5.

  • 当在6种符号(除I以外的所有符号)中的任意一个上方加横杠表示乘以1000,如下图所示

  • 在罗马数字在其系统中缺少码0,尽管罗马人适用单词nulla表示零的概念。

本文至此完毕,更多技术文章,尽情期待下一章节!

原文地址:https://blog.weiyigeek.top/2022/6-1-693.html

亲,文章都看完了,不关注一下吗?

如果此篇文章对你有帮助,请你将它分享给更多的人!

学习书籍推荐 往期发布文章 

作者答疑学习交流群:欢迎各位志同道合的朋友一起学习交流关注UP主后回复【学习交流群】。

🌐欢迎加入交流学习群:https://weiyigeek.top/visit.html

WeiyiGeek Blog's - 花开堪折直须折,莫待无花空折枝 】
作者主页:【 https://weiyigeek.top 】
博客地址:【 https://blog.weiyigeek.top 】
作者交流(wechat):weiyigeeker
公众号(wechat):全栈工程师修炼指南

温馨提示: 由于作者水平有限,本章错漏缺点在所难免,希望读者批评指正,并请在文章末尾留下您宝贵的经验知识,联系邮箱地址 master@weiyigeek.top 或者 UP主 、UP主 联系我。

计算机从业-起始篇 | 第2章.计算机科学导论之【数字系统】学习笔记的评论 (共 条)

分享到微博请遵守国家法律