• 免费注册  马上登录
  • 切换到窄版
  • go语言|go语言部落|go文库

    查看: 116|回复: 0

    常用进位计数制间的相互转换

    [复制链接]

    13

    主题

    14

    帖子

    59

    积分

    网站编辑

    Rank: 8Rank: 8

    积分
    59
    发表于 2019-12-7 22:35:52 | 显示全部楼层 |阅读模式
    本帖最后由 go酋长 于 2019-12-7 22:37 编辑

    常用进位计数制间的相互转换

    不同进位计数制之间的转换,其实质是基数间的转换。任何有理数都可以写成某种进位 计数制的按权展开表达式。如果两个有理数相等,则这两个数的整数部分和小数部分一定分 别相等。根据这个转换原则,在不同数制间进行转换时,通常对整数部分和小数部分分别进 行转换。
    1.二-十进制数间的相互转换
    ⑴ 十进制数转换成二进制数
    将十进制数转换成二进制数时,需要对整数部分和小数部分分别进行,然后将各自得到
    的结果组合,以获得最后结果。转换步骤如下:
    ① 整数的转换:采用除 2 取余法,得到的余数,其高低位顺序由后(下)向前(上)取;
    ② 小数的转换:采用乘 2 取整法,得到的整数,其高低位顺序由前(上)向后(下)取;
    ③ 将转换获得的整数和小数部分组合起来,即得转换后的二进制数。
    【例 1.1】将十进制数 (58.375) 10 转换为二进制数。
    解:将十进制数的整数部分 58 和小数部分 0.375 分别转换为二进制数的过程如下:
                                     十进制整数部分        二进         十进制小数部分                  二进
    2
    5
    8
      
      
      
    余数
      
      
    制数
      
      
      
      
    0.375
      
      
      
      
    整数
      
      
    制数
      
    2
    2
    9
      
    ……
      
      
    0
      
      
    低位
      
    ×
    2
      
      
      
      
      
    高位
      
    2
    1
    4
      
    ……
      
      
    1
      
      
      
      
      
      
    0.750
      
      
    ……
      
      
    0
      
      
      
      
      
    2
    7
      
    ……
      
      
    0
      
      
      
    ×
    2
      
      
      
      
      
      
      
      
    2
    3
      
    ……
      
      
    1
      
      
      
      
      
      
    1.500
      
      
    ……
      
      
    1
      
      
      
      
      
    2
    1
      
    ……
      
      
    1
      
      
      
    ×
    2
      
      
      
      
      
      
      
      
      
      
      
    0
      
      
    ……
      
      
    1
      
      
    高位
      
      
      
      
    1.000
      
      
    ……
      
      
    1
      
      
    低位
      
    file:///C:/Users/luohua/AppData/Local/Temp/msohtmlclip1/01/clip_image001.giffile:///C:/Users/luohua/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif
    则:(58.375) 10   = (111010.011) 2
    需要指出的是,一个十进制的小数不一定能完全准确地转换成二进制的小数。遇到这种
    情况,可以根据精度要求转换到小数点后的某一位为止。
    【例 1.2】将十进制小数 (0.6) 10 转换为二进制数,要求精确到二进制数小数点后 4 位。
    解:转换过程如下:
    0.6
      
    × 2
      
      
      
    整数
      
    1.2
      
    × 2
      
    …………………
      
      
    1
      
    0.4
      
    × 2
      
    …………………
      
      
    0
      
    0.8
      
    × 2
      
    …………………
      
      
    0
      
    1.6
      
    × 2
      
    …………………
      
      
    1
      
      
    1.2
      
      
    …………………
      
      
    1
      

    最后结果为:(0.6) 10   ≈ (0.1010) 2
    ⑵ 二进制数转换为十进制数
    二进制数转换成十进制数只需采用按权展开乘幂求和的方法即可。
    【例 1.3】将二进制数 (111010.101) 2 转换成十进制数。
    解:将二进制数 (111010.101) 2 按权展开乘幂求和得:
    (111010.101) 2=1×25+1×24+1×23+0×22+1×21+0×20+1×2-1+0×2-2+1×2-3
    =32+16+8+0+2+0+0.5+0+0.125  = (58.625) 10
    2.二-八进制数、十六进制数间的相互转换 二进制数虽然能被计算机直接接受和识别,但因为只有两个数码,表示同等数值时比其
    它进位计数制占用的位数要长。如 1 位十进制数 9,用二进制数表示需要 4 位:1001;2 位 十进制数 99,则需要用 6 位二进制数 1100011 表示。由于在日常书写或阅读时,使用二进 制数很不方便,易出错,所以计算机工作者常常使用八进制数或十六进制数来代替二进制数。
    ⑴ 二进制数转换成八进制数、十六进制数
    因为八进制的基数为 8,十六进制的基数为 16,分别为二进制的基数 2 的 3 次方和 4 次方,即 1 位八进制数可以用 3 位二进制数表示,1 位十六进制数可以用 4 位二进制数表示。 因此二进制数与八进制数、十六进制数之间的相互转换直接而又简便。
    ① 二进制数转换成八进制数
    将二进制数转换成八进制数的方法是:以小数点为界,整数部分向左,小数部分向右,
    每三位一组,用相应的八进制数表示,到左端最高位或右端最低位不足三位时,用 0 补足。
    ② 二进制数转换成十六进制数
    将二进制数转换成十六进制数的方法是:以小数点为界,整数部分向左,小数部分向右,
    每四位一组,用相应的十六进制数表示,到左端最高位或右端最低位不足四位时,用 0 补足。
    【例 1.4】将二进制数 (1011010111.10111) 2 分别转换成八进制数、十六进制数。
    解:转换过程如下:
    转换过程
              转换成八进制数                   转换
    成十六
    进制数
    001 011 010 111 101 110 0010 1101 0111 1011 1000
    1 3 2 7 5 6 2 D 7 B 8

    得:(1011010111.10111) 2   (1327.56) 8   (2D7.B8) 16
    ⑵ 八进制数、十六进制数转换成二进制数
    将八进制数、十六进制数转换成二进制数的方法是上述转换方法的逆操作。只要将每位
    八进制数或十六进制数分别用相应的三位或四位二进制数表示即可。
    【例 1.5】将八进制数 (623.54) 8 ,十六进制数 (5F4.A8) 16 分别转换成二进制数。
    解:转换过程如下:
    八进制数转二进制数        十六进制数转二进制数
    进制数转二进制数                       
    十六
    进制数转二进制数
    6 23 5 4 5 F 4 A8
    110 010 011101 100 0101 1111 0100 1010 1000

    得:(623.54) 8   (110 010 011.101 1) 2                       
    (5F4.A8)
    16   
    (101 1111 0100.1010 1)
    2

    从上述方法的介绍可以看出,二进制数与八进制数、十六进制数之间的相互转换,规则 统一,方法简便,转换快捷。特别是计算机中的存储容量、字长以及字符编码等都是以字节 为基本单位,而一个字节等于 8 位二进制数,正好可以用两个十六进制数表示。所以,在书 写程序,表示存储地址、数据时经常使用十六进制数。
    3.十进制与其他进制间的相互转换
    ⑴ 十进制数转换为八进制数 十进制数转换为八进制数的方法与转换成二进制数的方法相似,整数、小数分别转换。
    整数部分采用除 8 取余法,小数部分采用乘 8 取整法,最后将转换结果组合起来。
    【例 1.6】将十进制数 (1725.6875) 10 转换成八进制数。
    解:十进制整数部分 1725 和小数部分 0.6875 分别转换成八进制数的过程如下:
    十进制整数部分        八进                 十进制小数部分     八进


    file:///C:/Users/luohua/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif
      
            
    8
    2
    1
    5
          
    ……
          
          
    5
          
          
    低位
          
    ×    8
          
          
          
          
          
    高位
          
          
          
    8
    2
    6
          
    ……
          
          
    7
          
          
          
    5.5000
          
    ……
          
          
    5
          
          
          
       
       
       
       
    8    1   7   2  5           余数

    file:///C:/Users/luohua/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif
    file:///C:/Users/luohua/AppData/Local/Temp/msohtmlclip1/01/clip_image003.gif制数                0.6875               整数  制数



    8
      
    3    ……
      
      
    2
      
      
      
    ×    8
      
      
      
      
      
    0    ……
      
      
    3
      
      
    高位
      
      
    4.0000
      
      
    ……
      
      
    4
      
      
    低位
      

    得:(1725.6875) 10(3275.54) 8
    ⑵ 八进制数转换为十进制数
    将八进制数转换成十进制数同样只需采用按权展开乘幂求和的方法即可。
    【例 1.7】将八进制数 (3275.54) 8 转换成十进制数。
    解:将八进制数 (3275.54) 8  按权展开乘幂求和得:
    (3275.54) 8   = 3×83+2×82+7×81+5×80+5×8-1+4×8-2
    = 3×512+2×64+7×8+5×1+5×0.125+4×0.015625
    = 1536+128+56+5+0.625+0.0625  = (1725.6875) 10
    ⑶ 十进制与任意进制间的转换
    总结上述十进制数与二进制、八进制数之间相互转换的规律,即可得到十进制数与任意
    进制数之间相互转换的方法:
    将十进制数的整数、小数分别转换。整数部分采用除基数取余法,小数部分采用乘基数
    取整法,最后将转换结果组合起来即可。
    写出以该进制数的基数为底的按权展开式,乘幂求和算出该多项式的结果即可。
    4.计算机技术中使用的数制
    ⑴ 常用的进位计数制 在计算机系统中常用的进位计数制主要有十进制、二进制、八进制和十六进制。表 1.1
    列出了这几种进制数的特点。表 1.2 列出了它们的表示法。
    表 1.1        计算机中几种常用进位计数制的特点


    进位制        十进制        二进制        八进制        十六进制
    基数        R=10        R=2        R=8        R=16
    数码        
    0,1,2,3,4,5,6,7,8,9        
    0, 1        
    0,1,2,3,4,5,6,7,        0,1,2,3,4,5,6,7,8,9, A,B,C,D,E,F
    位权        10i        2i        8i        16i
    规则        逢十进一        逢二进一        逢八进一        逢十六进一
    缩写字母        D (Decimal)        B (Binary)        O (Octal)        H (Hexadecimal)
    表 1.2        计算机中几种常用进位计数制的表示法


    二进制        0000        0001        0010        0011        0100        0101        0110        0111        1000
    八进制        0        1        2        3        4        5        6        7        10
    十进制        0        1        2        3        4        5        6        7        8
    十六进制        0        1        2        3        4        5        6        7        8


    二进制        1001        1010        1011        1100        1101        1110        1111        10000
    八进制        11        12        13        14        15        16        17        20
    十进制        9        10        11        12        13        14        15        16
    十六进制        9        A        B        C        D        E        F        10
    ⑵ 计算机与二进制 在计算机中采用二进制数表示各种信息数据,进行运算,主要是因为二进制本身具有一
    些独特的优点:
    ① 表示方便
    二进制数只有 0 和 1 两个数码,在计算机中非常容易用电子元器件、电子线路、磁芯等 物理部件的两种不同的物理状态来表示。如晶体管的导通与截止,电容的充电和放电,开关 的接通与断开,电流的有与无,灯的亮与灭,磁芯磁化极性的不同等两个截然不同的对立状 态都可用于表示二进制数。将多个器件排列起来,就可表示多位二进制数。
    如果采用十进制,则需要在硬件上实现十个稳定的物理状态,来表示从 0~9 的 10 个数
    码,这是非常困难的。
    ② 运算简单 二进制的运算法则比较简单,如二进制的加法运算法则只有四条:
    0+0=0        0+1=1        1+0=1        1+1=10(逢二进一)
    而十进制的加法运算法则有 100 条。另外,二进制数的乘、除法运算只需要通过加法运 算和移位操作就可以完成,这比十进制数的乘、除法运算要简便得多,据此设计的计算机运 算器硬件结构大为简化,也为计算机软件的设计带来很大方便。
    ③ 逻辑运算

    逻辑代数又称布尔代数,是计算机逻辑电路设计的重要理论工具和二值逻辑运算的理论 基础。二进制的两个数码 0 和 1 正好与逻辑代数中的真(True)和假(False)相对应,所以 采用二进制,既便于使用逻辑代数的方法去设计和简化计算机的各种逻辑电路,也可以在计 算机中根据二值逻辑进行逻辑运算。
    ④ 可靠性高
    二进制数只有 0 和 1 两个基本数码,在存储、传输和处理时不容易出错,可靠性高。
    ⑤ 转换方便 计算机使用二进制,人们习惯于使用十进制。而二进制与十进制间的转换很方便,二进
    制与八进制、十六进制的转换也很简单,因此使人与计算机间的信息交流既简便又容易





    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Go语言社区

    GMT+8, 2020-2-20 16:56 , Processed in 0.040933 second(s), 17 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表