热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

在计算机中使用的都是什么数,计算机中使用的数

电脑漫谈.计算机中使用的数计算机本质上是处理数据的机器。因为宇宙中的各类信息都可以用数据来表示,也就是说图像、文字、声音、视频……等信息都可以被数字化,而不论这些数字是何等复杂,在

电脑漫谈.计算机中使用的数

计算机本质上是处理数据的机器。因为宇宙中的各类信息都可以用数据来表示,也就是说图像、文字、声音、视频……等信息都可以被数字化,而不论这些数字是何等复杂,在计算机中都是以二进制形式进行存储和处理的。因此理解二进制数的计数规律和原理就成了我们深入学习计算机知识的第一课。

一、二进制数

1、从计数规律谈起

我们几乎每天都要和数字打交道,我们每天使用的数字称作十进制数。十进制数的特点是使用“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”这十个符号表示数值的大小。小到数值0,大到成千上万乃至上亿的数值都可以用这十个符号来表示。只要稍加留心就不难发现,数值越大,用来表示数字的符号位数也越多,同一数字位于数据中的不同位置,则其代表的大小也是不同的。比如数字5,当其出现在整数的最右端(个位)时,则它代表5个1,当它出现在数字右起向左数的第二位(十位)时,它代表5个10,当它出现在数字右起向左数的第三位(百位)时,它代表5个100。这是因为:在一个由多位数字组成的数值中,数值中的各位置具有不同的数量单位。我们所说的个、十、百、千、万……实际就表述了数值中的数字在不同位置处所对应的单位。我们将这种由位置决定的单位称作该位的“权”。即“个”位的权是1,“十”位的权是10,“百”位的权是100……;小数点右侧第一位(即十分位)的权是0.1,小数点右侧第二位,即百分位的权是0.01……。如果我们将一个数的整数部分右起第一位(个位)称其为第0位,整数部分右起第二位(十位)称其为第1位……,而将小数点后第一位(十分位)称为-1位,第二位称为-2位……时,这样就有了统一的表示十进制数各位与权的关系式:

《在计算机中使用的都是什么数,计算机中使用的数》

下图以十进制数3072.241为例,标出了十进制数中各位的权与位的关系。

《在计算机中使用的都是什么数,计算机中使用的数》

上图中数字上方标出的是各位数字的序号,数字下方黑色框中标出的是各位的权与序号的关系。我们用式子:

《在计算机中使用的都是什么数,计算机中使用的数》

进行计算,其结果恰是十进制数3072.241。

十进制数的另一特点是当数值超过9,99,9999……时都要增加位数。这是因为原来的数字符号已用尽,不增加数位就无法表示更大的数。至此我们可以将十进制数的特点归纳为以下三点:

(1)用0、1、2、3、4、5、6、7、8、9共十个符号表示数。

(2)逢十进行一

(3)第N位的权等于《在计算机中使用的都是什么数,计算机中使用的数》

2、二进制数

二进制数只用“0”和“1”两个符号表示数值,因为只有两个符号,所以逢二就要进一。因为每位上只能使用0或1,某位一旦是1,再加1就要进位,十进制数每向高位进一次位都相当于在当前位增加了十,二进制数每进一位则相当于在当前位增加了2。所以进位后当前位要恢复为0。比如二进制数1再加1,值应该为2,但二进制数中无此符号,故只能向高位进位来表示数值2,向高位进位后相当于在当前位上加了2,故当前位要(减1)恢复为0,即二进制数“10”就是十进制数的2。二进制数10再加1就成了11,显然二进制数的11就代表十进制数的3,二进制数11再加1,则又要产生进位,低位向高位进位后,低位恢复为0,但高位已是1,于是接收到进位后又向更高位进位,向更高位进位后,该位也应恢复为0,于是二进制数的11再加1则为100,二进制数的“100”就是十进制数的4,大家可以依据此规律依次写下0、1、2、3……后的任意一个二进制数,下表中列出了0-19的二进制数,为了区分二进制数和十进制数,我们规定在二进制数后面添加字母B来标识这是一个二进制数,比如1011B即为一个二进制数。

下表列出了十进制数和二进制数从0开始的前20个数。请注意观察二进制数进位的情况。

《在计算机中使用的都是什么数,计算机中使用的数》

从前面的介绍和上表不难看出,在一个二进制数中,位于整数最右侧(第0)位的权是1,位于最右侧向左数第1位的权是2,第2位的权是4,第3们位的权是8……,从最低位向左数第N位的权是2N。

从上面的二进制数我们不难看出二进制数具有如下特点:

(1)用0、1

两个符号表示数。

(2)逢二进行一

(3)第N位的权等于《在计算机中使用的都是什么数,计算机中使用的数》(注意这里的位序号也是从第0位开始标注)

十进制数各位的权是个、十、百、千、万……,二进制数各位数的权是1、2、4、8、16……。

比如上表中的二进制数1011,相当于1个8,0个4,1个2,1个1组成,其对应的十进制数是11。参见下图。图中蓝色数字代表二进制数各位的权。

《在计算机中使用的都是什么数,计算机中使用的数》

3、二进制数和十进制数的转换

1)十进制整数到二进制整数的转换

我们可以使用“除以2取余”法将十进制整数转换为二进制整数,下面通过实例来说明具体方法。

【例题1】将十进制数69转换为二进制数

方法:将69除以2记录下商和余数,用商再除以2记录下商和余数,反复该过程直到商为1时停止,如下图所示。其中69除以2商34余1,34除以2商17余0,17除以2商8余1……,写出最后的商和自下而上的各余数,结果为1000101,为了和十进制数相区别,二进制数用B来标识,即69=1000101B

《在计算机中使用的都是什么数,计算机中使用的数》

2)十进制小数到二进制小数的转换

我们用乘2取整的方法可以将十进制小数转换为二进制小数,下面通过实例来说明转换方法。

【例题2】将十进制数0.6875转换为二进制数

我们用2乘以0.6875得到积1.375,将整数1取出,作小数点后的第一位二进制数,再用余下的小数部分0.375乘以2,积为0.75,取出整数0,作为小数点后的第二位,再用2乘以0.75,积为1.5,取出1作小数点后的第三位,再将余下的0.5乘以2,结果为1.0,取出整数1,做小数点后的第四位,结果0.6875=0.1011B。整个过程可简化为下图所示。其中红框中的数值逐个取出放置在二进制数的小数点后面。余下的数再继续计算。

《在计算机中使用的都是什么数,计算机中使用的数》

如果要转换的十进制数既有整数也有小数,则整数和小数部分要分别转换,然后再将结果分别写在小数点的左侧和右侧。

比如要将69.6875转换成二进制数,则转换结果是:

69.6875=1000101.1011B

但要注意:十进制小数转换为二进制数时,有时会出现无限循环的现象,这时可以按要求计算到小数点后的某一位,该位后面的数舍去(也就是取近似值)。又如十进制数0.2转换为二进制数结果如下:

《在计算机中使用的都是什么数,计算机中使用的数》

该转换过程出现了无限循环现象,此时只能取近似值,只要数位足够多,近似值也能达到要求的的精度。

3)二进制数到10进制数的转换

我们可以用“按权展开”的方法将二进制数转换为十进制数,即根据各位的权,计算有几个1,几个2,几个4,几个8……组成,最后再相加即为其对应的十制数。

【例题3】

将二进制数1011101B转换为十进制。

原二进制数按权展开如下:红线标出的数字是该位的权。

《在计算机中使用的都是什么数,计算机中使用的数》

【例题4】将二进制数101.1101B转换为十进制。

原二进制数按权展开如下:

《在计算机中使用的都是什么数,计算机中使用的数》

前面介绍了二进制数的相关知识,因为二进制数只用两个符号表示数,而用电子器件表示这两种状态非常容易,人们通常用电子器件的高电平和低电平两种状态分别代表二进制数中的“0”和“1”,这样二进制数在计算机中实现起来就非常容易,二进制数的使用使计算机的设计和工作过程得到了极大的简化。

二进制数位数较多,书写和阅读都不方便,而八进制数和十六进制数与二进制数间有直接的转换关系,且书写简洁,于是人们又常用八进制数和十六进制数来记录计算机中使用的二进制数。下面介绍八进制数和十六进制数。

二、八进制数和十六进制数

1、八进制数

八进制数使用“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”八个符号表示数值,具有如下特点:

(1)使用1-7八个符号表示数(2)逢八进一

(3)第N位的权是《在计算机中使用的都是什么数,计算机中使用的数》

十进制数0-19用八进制书写如下:

《在计算机中使用的都是什么数,计算机中使用的数》

2、八进制数与二进制数的转换

1)二进制转换为八进制

二进制数转换为八进制数的方法是以小数点为中心,分别向左右两侧每三位分为一组,各组分别按权展开为一个十进制数。这样转换后的数字最大也不会超过7,这恰是我们所需的八进制数。

【例题5】将二进制数11101100.1011B转换为八进制数

第一步、以小数点为中心,分别向两侧每三位一组进行分组,最左和最右端不足三位可以补0至三位。参见下图红线段。下图中红色的0是为补足三位而临时添加的。

第二步、每组数都按权展开相加得到一个不超过7的数字(下图中上面红色的数字代表各组二进制数中各位的权。比如:101,按权相加应为5(1个4、0个2和1个1相加)

《在计算机中使用的都是什么数,计算机中使用的数》

第三步、将各组转换后的数字写在各组的下方,并在原位置添加小数点,得到上图中的蓝色数字。最后11101100.1011B转换为八进制数后为354.54O

说明:八进制数最后一般以字母O作标识,因O易与数字0混淆,所以也常将字母O写作Q。

二进制数转换为八进制数的方法可以概括为:

三位一组,每组按权展开,每组转换成一位八进制数。显然一个八位的二进制数用八进制书写只需三位即可。

2)八进制数转换为二进制数

八进制数转换为二进制数的方法是:一位八进制数转换为三位二进制数。和上面的过程相反。

【例题6】将351.27O转换为二进制数,方法是:将一位转换为三位二进制数,每位八进制数都拆成421,其中缺少哪一个数,则二进制数中对应该权的位填入0,否则填入1,比如5,可分解为401,表示其中缺少权为2的数,故可写为101,7可分为421,代表三个位的权均存在,故写为二进制数111,依此类推。

《在计算机中使用的都是什么数,计算机中使用的数》

最后结果为351.27O=11101001.010111B

注意,最前面的0和小数点后最后面的0均可省略,但中间的0不能省略。

3、十六进制数

十六进制数使用十六个符号表示数值,但因阿拉伯数字只有“0-9”十个符号,所以又使用了六个英文字母“A”、”B”、“C”、“D”、“E”、“F”表示10,11,12,13,14,15这几个数,十六进制数具有如下特点:

(1)使用0-9和A-F十六个符号表示数

(2)逢十六进一

(3)第N位的权是《在计算机中使用的都是什么数,计算机中使用的数》

十进制数0-19用十六进制书写如下:

《在计算机中使用的都是什么数,计算机中使用的数》

为了和十进制数相区别,通常在十六进制数后面添加H作为标识。

4、二进制数和十六进制数的转换

1)二进制转换为十六进制

二进制数转换为十六进制数的方法和二进制数转换为八进制数的方法类似,只是分组时四位一组。即对二进制数以小数点为界,分别向左向右四位一组,各组分别转换成一个十进制数,只是当转换后的数超过9时用字母A-F来表示。这样转换后的数字最大也不会超过15,这恰是我们所需的十六进制数。

【例题7】将二进制数1111101001.1011B转换为十六进制数

第一步、以小数点为中心,分别向两侧分组,四位一组,最左和最右端不足四位可以补0至四位。参见下图红线段。下图中红色的0是为补足四位而添加的。

第二步、每组二进制数都按权展开相加得到一个不超过15的数字(下图中上面红色的数字代表各组二进制数中各位的权。比如:1011,按权相加应为十进制数的11(由1个8、0个4、1个2和1个1组成),但要注意,在书写时11要写成B。同样1101,按权展开后为14,要写成E。最后转换结果如下:

《在计算机中使用的都是什么数,计算机中使用的数》

二进制数1111101001.1011B转换成十六进制数后结果是:3E9.B8H,最后的H是十六进制数的标识。

2)十六进制数转换为二进制数

十六进制数转换为二进制数的方法是:一位十六进制数转换为四位二进制数。和上面的过程相反。

【例题8】将3E9.B8H转换为二进制数

说明:将每一位十六进制数转换为四位二进制数,每位十六进制数都按权拆成8421,四位中缺少哪一个数,则二进制数中和该权对应的位填入0,否则填入1,比如C,相当于十进制数的12,可拆分为1个8,1个4,0个2和0个1,故写成二进制数为1100。

3E9.B8H拆分为二进制数的方法如下图所示。

《在计算机中使用的都是什么数,计算机中使用的数》

我们学习了二进制、八进制和十六进制数的概念及转换方法,我们学习的数制间的转换可用下图中的红线表示,本来十进制数和八进制数和十六进制数是可以直接转换的,但实际使用较少,我们就不介绍了,需要时可先将十进制数转换为二进制,然后再转换为八进制数或十六进制数即可。《在计算机中使用的都是什么数,计算机中使用的数》

二进制数使用两个符号表示数字,这给用机器存储和处理数据带来了便利。但却给我们的记忆、分析和阅读带来了不便,于是人们便使用八进制或十六进制数来记录计算机指令。八位二进制数只要用三位八进制数或两位十六进制数就可以完整记录下来。

《在计算机中使用的都是什么数,计算机中使用的数》


推荐阅读
  •   上一篇博客中我们说到线性回归和逻辑回归之间隐隐约约好像有什么关系,到底是什么关系呢?我们就来探讨一下吧。(这一篇数学推导占了大多数,可能看起来会略有枯燥,但这本身就是一个把之前算法 ... [详细]
  • HBase运维工具全解析
    本文深入探讨了HBase常用的运维工具,详细介绍了每种工具的功能、使用场景及操作示例。对于HBase的开发人员和运维工程师来说,这些工具是日常管理和故障排查的重要手段。 ... [详细]
  • 堆是一种常见的数据结构,广泛应用于计算机科学领域。它通常表示为一棵完全二叉树,并可通过数组实现。堆的主要特性是每个节点的值与其父节点的值之间存在特定的关系,这使得堆在优先队列和排序算法中非常有用。 ... [详细]
  • 深入剖析 DEX 赛道:从 60 大头部项目看五大趋势
    本文通过分析 60 大头部去中心化交易平台(DEX),揭示了当前 DEX 赛道的五大发展趋势,包括市场集中度、跨链协议、AMM+NFT 结合、新公链崛起以及稳定币和衍生品交易的增长潜力。 ... [详细]
  • 深入理解一致性哈希算法及其应用
    本文详细介绍了分布式系统中的一致性哈希算法,探讨其原理、优势及应用场景,帮助读者全面掌握这一关键技术。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • Linux 学习路径与核心框架
    本文提供了一套系统化的 Linux 学习路径,旨在帮助初学者和中级用户构建全面的知识体系。通过逐步深入的学习方法,掌握从基础命令到高级系统管理的技能。 ... [详细]
  • 本文详细介绍了 Flink 和 YARN 的交互机制。YARN 是 Hadoop 生态系统中的资源管理组件,类似于 Spark on YARN 的配置方式。我们将基于官方文档,深入探讨如何在 YARN 上部署和运行 Flink 任务。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 开发笔记:9.八大排序
    开发笔记:9.八大排序 ... [详细]
  • 在使用 Flutter 进行开发时,可能会遇到热更新功能无法正常工作的问题。本文将探讨一种常见的错误:无法连接到 Dart 观察站,并提供详细的解决方法。 ... [详细]
  • 本书系统介绍了概率论的基础概念,包括样本空间、事件及其概率定义,条件概率和独立性,并深入探讨了贝叶斯公式。随后,书中详细讲解了多种类型的随机变量,如离散型(伯努利、二项、几何、泊松)和连续型(均匀、指数、伽玛、正态)。此外,还涵盖了随机变量的期望值计算、联合分布特性、矩母函数以及极限定理等内容。特别地,本书对马尔可夫链、泊松过程及其扩展形式进行了详尽分析,为读者提供了丰富的理论依据和实际应用案例。 ... [详细]
  • 无线通信设备的OTA测试及其重要性
    随着智能设备和无线通信技术的广泛应用,确保这些产品在各种应用场景中的稳定性和可靠性变得至关重要。OTA(Over The Air)测试作为一种关键手段,能够有效验证无线传输设备的整体性能,解决通信问题并提升用户体验。 ... [详细]
  • 本题探讨了在一个有向图中,如何根据特定规则将城市划分为若干个区域,使得每个区域内的城市之间能够相互到达,并且划分的区域数量最少。题目提供了时间限制和内存限制,要求在给定的城市和道路信息下,计算出最少需要划分的区域数量。 ... [详细]
  • 本文探讨了如何使用自增和自减运算符遍历二维数组中的元素。通过实例详细解释了指针与二维数组结合使用的正确方法,并解答了常见的错误用法。 ... [详细]
author-avatar
lbjf_887
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有