[杂谈]-二进制到十进制转换

二进制到十进制转换

文章目录

1、概述

二进制数在数字系统和计算机中用于计算数据。 此外,数字系统之间的数据传输或接口也使用二进制数来传输信息。 从上一篇文章中[从[杂谈]-从硬件角度理解二进制数我们知道,二进制数是以2为基数的数字,这意味着它只有两 (2) 个数字来表示数字的值。 这些数字从 0 开始,到 1 结束,总共有两 (2) 个数字作为一个数字的值。 二进制数可以包含多于一个这样的数字,例如二进制数(1001102)具有六(6)个二进制数字。 数字末尾的下标2表明它是一个以2为底的数字,即二进制数。

然而,最常用的计数进制是十进制,它是一种以 10 为基数的计数系统。 十进制数中的每个数字可以具有从 0 开始到 9 结束的十 (10) 个值中的任意一个。与二进制数一样,十进制数可以包含多个数字。 例如, ( 38240 ) 10 (38240)_{10} (38240)10 数字有五 (5) 位,下标 10 表明它是基于 10 的数字,即十进制数字。 同样,十进制数的加(+)、减(-)、乘(×)和除(÷)运算,这些数学运算也可以应用于其他计数系统。

计数系统中的每个数字都包含一个值或权重,并从左到右递增。 从左到右,每个数字的值或权重比其前一个数字增加基数倍。 这意味着数字权重或值由提高到数字位置的基值给出。 最低有效数字 (Least Significant Digit ,LSD) 的位置为零 (0)。 例如,十进制数八十二 ( 82 ) 10 (82)_{10} (82)10 有两个数字,即8)和2。 2是从小数右侧开始位置为零 (0) 的最低有效数字,因此其权重为 $10^0 $(1)。 同样,第二个数字(在本例中为最高有效数字)的位置为1,其权重为 1 0 1 10^1 101 (10)。 因此,从右到左,对于十进制数,即 1、10、100、1000 等,每个数字的权重增加十 (10) 倍。同样,对于二进制数,权重增加两 (2) 倍 即 1、2、4、8、16、32 等。

从数学上来说,数字是加权和,由下式给出:

N = ∑ b i × q i N = \sum{b_i \times q^i} N=∑bi×qi

其中,

  • N为实数
  • b为位数
  • q为基值
  • i为位数位置值

2、十进制计数系统

如前所述,在十进制数中,从小数点开始,每个数字的值会增加十 (10) 倍,即 100、 1 0 1 10^1 101、 1 0 2 10^2 102、 1 0 3 10^3 103、 1 0 4 10^4 104 等。同样,每个数字的值会减少十 (10) ) 次,我们从小数点向右移动以计算分数,例如 1 0 − 1 10^{-1} 10−1、 1 0 − 2 10^{-2} 10−2、 1 0 − 3 10^{-3} 10−3、 1 0 − 4 10^{-4} 10−4 等。这是因为十进制数以 10 为底(模 10),每个数字的位置指示该数字的权重或大小,即 q = 10. 例如,这意味着50可写为 5 × 1 0 1 5 \times 10^1 5×101,500可写为 5 × 1 0 2 5 \times 10^2 5×102。 如上所述,十进制数等于其各位数字之和乘以各自的权重。 在下面的文本中,一个十进制数 (N = 4125) 以十进制格式显示,其中包含每个数字及其权重。

以 b × q b \times q b×q的形式如下:

在十进制数或任何其他数字系统中,最右边的数字是最低有效数字 (LSD),最左边的数字是最高有效数字 (MSD)。 接下来,对于上面的示例,5是最低有效数字 (LSD),其权重最低,即1。 同时,4是最高有效数字 (MSD),其权重最高为一千 (1000)。

3、二进制计数系统

正如本文前面所讨论的,二进制计数系统是数字和计算机系统中的基本计数系统。 与十进制系统一样,二进制计数系统遵循相同的规则集,只不过二进制数是基数 2 的计数系统而不是基数 10。 这意味着二进制数字的权重变化为2次方,而不是10次方。 小数位的权重从小数点向右依次为 1 0 0 、 1 0 1 、 1 0 2 、 1 0 3 、 1 0 4 10^0、10^1、10^2、10^3、10^4 100、101、102、103、104等。 然而,二进制数字的权重是 1 0 0 、 2 1 、 2 2 、 2 3 、 2 4 10^0、2^1、2^2、2^3、2^4 100、21、22、23、24等。

此外,二进制数字可以保存 0 或 1,即两个值。 二进制数可以由多于一个二进制数字组成,并且每个二进制数字的权重或值比其前一个右侧二进制数字增加2倍。 因此,按照十进制计数系统,最右边具有最低权重的二进制数字(位)称为最低有效位(LSB)。 同样,最左边的二进制数字(位)拥有最高权重,称为最高有效位 (MSB)。 由于该位可以具有0或1,因此具有0值的位的权重无效,并且二进制计数系统可以由具有1值的数字的权重来表示。 下表显示了二进制数的位数及其等效的十进制值的权重。

当我们从右向左移动时,每个二进制数字(位)的权重随着每个数字的步长而增加(加倍)。 最低有效数字 (LSD) 的权重最低为1,最高有效数字 (MSD) 的权重最高为256。

4、二进制到十进制转换示例

将 8 位二进制数 ( 11010011 ) 2 (11010011)_2 (11010011)2转换为其等效的十进制数。 下表列出了每个二进制数字(位)的权重及其十进制等效值。

现在,使用加权和的方法,可以得到这个二进制数的十进制等值。

因此,对于二进制数,可以通过值为1的数字权重之和轻松获得等效的十进制数。0值的数字与其权重的乘积为零,因此计入加权值中。

5、十进制到二进制转换

上面显示了使用加权和方法将二进制数转换为等效的十进制数。 为了将十进制数转换为等效的二进制数,可以使用重复除以2方法来实现。 在此方法中,给定的十进制数除以2,得到一个商和一个为 0 或 1 的余数。商被重复除以 2,连续产生一个余数,直到商变为零。 重复除法过程中获得的余数构成所需的二进制数。 第一个余值形成二进制数的最低有效位 (LSB),最后一个剩余值形成二进制数的最高有效位 (MSB)。

在以下示例中,使用重复除以2方法将十进制数 ( 238 ) 10 (238)_{10} (238)10转换为二进制数。

同样的方法也可以用于将十进制数转换为另一种计数系统,只不过除以2被替换为计数系统的基值。

6、二进制数的名称和前缀

与十进制数一样,两个二进制数也可以一起加减。 结果数字的大小取决于相加或相减的二进制数的大小。 二进制数的大小由二进制位数(位数)给出,位数分为不同的大小和名称。 在下表中,位数被分为更大的组,并且还给出了它们各自的名称。

这里值得一提的是,在解释这些数字时应该小心,因为十进制数字(从 0 到 9)的数字值也包含在二进制和八进制计数系统中。 例如,数字 101 可能表示二进制、八进制或十进制数。 同样,数字 234 可以是八进制数或十进制数。 通常,没有任何基值或计数系统的数字表示十进制数。 最好将数字及其基值作为下标,例如 10 1 2 101_2 1012(二进制数)或 10 1 10 101_{10} 10110(十进制数)。

数字系统和计算机的内存大小以字节为单位,将8位组合在一起。 与其他测量单位一样,添加前缀来表示较大的值。 下表列出了最常用的表示二进制数的前缀。

7、总结

  • 二进制数是一种以 2 为基数的计数系统,由称为位的二进制数字组成。
  • 一个位的值可以是"0"或"1",即它的值只能容纳两个数字。
  • 位值的大小或权重是其前一位(从右到左)的两倍(2 的幂)。
  • 最右边的位称为最低有效位 (LSB),在二进制数中具有最低的权重。
  • 最左边的位称为最高有效位 (MSB),在二进制数中具有最高权重。
  • 可以使用权重总和方法将二进制数转换为十进制数,该方法将每个数字的值与其权重的乘积相加。
  • 可以使用重复除以 2 方法将十进制数转换为二进制数,该方法将十进制数除以商和余数。 余数构成所需的二进制数,直到除法结果为 0 商。 第一个和最后一个余数分别形成 LSB 和 MSB。
  • 最好通过将基值写为下标来提及编号系统和数字,以避免误解。
相关推荐
Jackey_Song_Odd1 小时前
解决Ubuntu下无法装载 Windows D盘的问题
linux·ubuntu
Linux运维技术栈1 小时前
Ansible(自动化运维)环境搭建及ansible-vault加密配置
运维·自动化·ansible
乔巴不是狸猫1 小时前
第11周作业
linux
Bessssss2 小时前
centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!
linux·运维·centos
苹果醋32 小时前
Golang的文件加密工具
运维·vue.js·spring boot·nginx·课程设计
jwensh3 小时前
【Jenkins】Declarative和Scripted两种脚本模式有什么具体的区别
运维·前端·jenkins
silver6873 小时前
Linux 下的 GPT 和 MBR 分区表详解
linux
R-sz3 小时前
14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误“
linux·python·centos
大熊程序猿4 小时前
xxl-job docker 安装
运维·docker·容器
code_abc4 小时前
Shell 脚本编程基础:变量
linux