• 二进制、八进制、十进制、十六进制之间的转换


    一、简介

    1.位权

      位权是一个数学名词。对于多位数,处在某一位上的“1”所表示的数值的大小,称为该位的位权。例如十进制第2位的位权为10,第3位的位权为100;而二进制第2位的位权为2,第3位的位权为4,对于 N进制数,整数部分第 i位的位权为N(i-1),而小数部分第j位的位权为N-j。数码所表示的数值等于该数码本身乘以一个与它所在数位有关的常数,这个常数称为“位权”,简称“权”。

    1)十进制数的特点是逢十进一。例如:

    (1010)10 =1× 10^3+0× 10^2+1× 10^1+0× 10^0

    2)二进制数的特点是逢二进一。例如:

    (1010)2 =l× 2^3+0 × 2^2+l× 2^1+0 × 2^0=(10)10

    3)八进制数的特点是逢八进一。例如:

    (1010)8 =l× 8^3+0 × 8^2+l× 8^1+0 × 8^0=(520)10

    4)十六进制数的特点是逢十六进一。例如:

    (BAD)16 =11× 162+10×161+13×16^0=(2989)10
      因此,不同的进位制,处于同一数位上的权是不同的。

    2.二进制

      二进制(binary),在科学计算机中缩写为bin,发现者莱布尼茨,是在数学和数字电路中以2为基数的记数系统,是以2为基数代表系统的二进位制。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示。数字电子电路中,逻辑门的实现直接应用了二进制,现代的计算机和依赖计算机的设备里都使用二进制。每个数字称为一个比特(Bit,Binary digit的缩写)。
      二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。

    3.八进制

      八进制,Octal,缩写OCT或O,一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进1。一些编程语言中常常以数字0开始表明该数字是八进制。八进制的数和二进制数可以按位对应(八进制一位对应二进制三位),因此常应用在计算机语言中。

    4.十进制

      十进制数是组成以10为基础的数字系统,有0,1,2,3, 4, 5, 6, 7, 8, 9十个基本数字组成。十进制,英文名称为Decimal System,来源于希腊文Decem,意为十。在科学计算器中缩写为DEC。十进制计数是由印度教教徒在1500年前发明的,由阿拉伯人传承至11世纪。

    5.十六进制

      十六进制(hexadecimal)是计算机中数据的一种表示方法。它的规则是“逢十六进一”。在科学计算器中的缩写为Hex。
      十六进制数的基数是16,采用的数码是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中A-F分别表示十进制数字10-15。

    二、计算

    1.二进制

      与其余进制运算法则一样,只是逢二进一。

    1)二进制数的加法

    根据“逢二进一”规则,二进制数加法的法则为:
    0+0=0
    0+1=1+0=1
    1+1=0 (进位为1)
    1+1+1=1 (进位为1)
    例如:1110和1011相加过程如下:
    在这里插入图片描述

    2)二进制数的减法

    根据“借一有二”的规则,二进制数减法的法则为:
    0-0=0
    1-1=0
    1-0=1
    0-1=1 (借位为1)
    例如:1101减去1011的过程如下 :
    在这里插入图片描述

    3)二进制数的乘法

      二进制数乘法过程可仿照十进制数乘法进行。但由于二进制数只有0或1两种可能的乘数位,导致二进制乘法更为简单。二进制数乘法的法则为:
    0×0=0
    0×1=1×0=0
    1×1=1
    例如:1001和1010相乘的过程如下:
    在这里插入图片描述

    4)二进制数的除法

      二进制数除法与十进制数除法很类似。可先从被除数的最高位开始,将被除数(或中间余数)与除数相比较,若被除数(或中间余数)大于除数,则用被除数(或中间余数)减去除数,商为1,并得相减之后的中间余数,否则商为0。再将被除数的下一位移下补充到中间余数的末位,重复以上过程,就可得到所要求的各位商数和最终的余数。
    例如:100110÷110的过程如下:
    在这里插入图片描述
      所以,100110÷110=110余10。

    2.八进制

      与其余进制运算法则一样,只是逢八进一。

    3.十进制

      与其余进制运算法则一样,只是逢十进一。

    4.十六进制

      与其余进制运算法则一样,只是逢十六进一。

    三、转换

    1.二进制转八进制

      取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,不足补0。接着将这三位二进制按权相加,得到的数就是一位八位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。
    实例:把二进制10011101010001110101000111111转化为八进制。
    第一步,分组,从右往左,三位一组,得到010、011、101、010、001、110、101、000、111、111,注意最左端的10不足三位,左边补0。
    第二步:按照000、001、010、011、100、101、110、111分别转化为0、1、2、3、4、5、6、7这个公式,把分组后的二进制,转化为2、3、5、2、1、6、5、0、7、7。
    第三步:把得到的分组在合并,得到八进制数据。也就是二进制10011101010001110101000111111=八进制2352165077。

    2.二进制转十进制

      根据位权公式,把二进制数从左向右按权相加,得到的数字就是十进制数。
    例如:把100101110转化成十进制。
    100101110=128+0*27+026+1*25+024+1*23+122+1*21+0*2^0=302。

    3.二进制转十六进制

      二进制转十六进制的方法与二进制转八进制的方法近似,转八进制是取三合一,转十六进制是取四合一,即从二进制的小数点为分界点,向左(向右)每四位取成一位,不足补0。接着将这四位二进制按权相加,然后,把数字按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。
    在这里插入图片描述

    4,八进制转二进制

    将八进制转换为二进制采用相反的操作“1位拆3位”。
    举例:我们将八进制的226转化成二进制。先将226拆成三个数字2、2、6,
    然后我们分别对这三个数字进行短除法,
    在这里插入图片描述
    分别将每个数的余数从下到上写出来,不足三位数的补0
    在这里插入图片描述
    最后,我们将三个数字的二进制合并,二进制首位的0可以不写,即得出八进制的226转化成二进制为10010110
    在这里插入图片描述

    5.八进制转十进制

    把八进制数按权展开、相加即可得十进制数,也就是让八进制各位上的系数乘以对应的权,然后求其和,如下:
    156.4= 1×8^2 + 5×8^1 + 6×8^0 + 4×8^-1= 110.5

    6.八进制转十六进制

    八进制转十六进制有两种方法,具体如下:
    方法一:
    八进制转成二进制,二进制转成十六进制。
    方法二:
    八进制转成十进制,十进制转成十六进制。

    7.十进制转二进制

    十进制整数转换为二进制整数采用"除2取余,逆序排列"法。十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。
    如:789=1100010101(B)
    789/2=394 余1 第10位
    394/2=197 余0 第9位
    197/2=98 余1 第8位
    98/2=49 余0 第7位
    49/2=24 余1 第6位
    24/2=12 余0 第5位
    12/2=6 余0 第4位
    6/2=3 余0 第3位
    3/2=1 余1 第2位
    1/2=0 余1 第1位

    再如:0.625=(0.101)B
    0.625*2=1.25======取出整数部分1

    0.25*2=0.5========取出整数部分0

    0.5*2=1==========取出整数部分1

    8.十进制转八进制

    十进制转八进制的方法与十进制转二进制的方法近似,即整数部分“除8取余,逆序排列”,小数部分“乘8取整,顺序排列”。

    9.十进制转十六进制

    十进制转十六进制的方法与十进制转二进制的方法近似,即整数部分“除16取余,逆序排列”,小数部分“乘16取整,顺序排列”。

    10.十六进制转二进制

    与八进制转二进制方法近似,将十六进制转换为二进制采用相反的操作“1位拆4位”。

    11.十六进制转八进制

    十六进制转八进制有两种方法,具体如下:
    方法一:
    十六进制转成二进制,二进制转成八进制。
    方法二:
    十六进制转成十进制,十进制转成八进制。

    12.十六进制转十进制

    把十六进制数按权展开、相加即可得十进制数,也就是让十六进制各位上的系数乘以对应的权,然后求其和,如下:
    156.4= 1×16^2 + 5×16^1 + 6×16^0 + 4×16^-1= 342.25

    四、对照表

    二进制八进制十进制十六进制
    0000000
    0001111
    0010222
    0011333
    0100444
    0101555
    0110666
    0111777
    10001088
    10011199
    10101210A
    10111311B
    11001412C
    11011513D
    11101614E
    11111715F
  • 相关阅读:
    步进电机实验
    嵌入式学习第二十五天!(网络的概念、UDP编程)
    MySQL大表优化方案
    蓝桥杯 java 承压计算
    2311rust过程宏的示例
    全球名校AI课程库(28)| MIT麻省理工 · 基因组学机器学习课程『Machine Learning for Genomics』
    MyCat搭建MySQL双主双从及分库分表
    HarmonyOS应用开发-RushOrm体验
    在FPGA上快速搭建以太网
    SCM供应链管理系统实施困难及解决方案
  • 原文地址:https://blog.csdn.net/qq_39353597/article/details/126417436