首页 > 其他 > 详细

数制与进制转换

时间:2021-02-28 00:23:56      阅读:26      评论:0      收藏:0      [点我收藏+]

计算机中常用的数制

概念

  • 使用数字量表示物理量时, 仅用一位编码一般不够用, 因此经常会使用多位数码进位计数制

    \[0 \backsim 9 \rightarrow 10 \backsim 99 \rightarrow 100 \backsim 999 \rightarrow \cdots \cdots \]

  • 多位数码中每一位的构成方法以及从低位到高位的进位规则称为数制

  • 数字电路中常用技术数制

    • 十进制: 0 ~ 9
    • 二进制:0, 1
    • 八进制: 0 ~ 7
    • 十六进制 : 0 ~ 9A, B, C, D, E, F
  • 任何一种进位计数制中,任何一个数都由整数和小数两部分组成。

  • 两种书写形式: 位置计数法, 多项式表示法

计算机常用二进制位

  • 计算机中常用到的二进制位数有8位、16位、32位,可以分别用2位、4位、8位十六进制数表示;
  • 其他任意进制的分析方法和二进制、十进制、十六进制相同。

进制计数两种方法

  • 位置计数法

    \[(N)_{R} = a_{n-1} a_{n-2} ... a_1a_0 \cdot a_{-1}a_{-2} ... a_{-m} \]

    • 例如: (524.27)10

    \[= 5 \times 10^2 + 2 \times 10^1 + 4 \times 10^0 + 3 \times 10^{-1} + 7 \times 10^{2} \]

  • 多项式表示法: 根据位置计数法, 可得到任意(R)进制数的展开式的普遍形式:

    \[(N)_R = \sum_{i=-m}^{n-1}{a_iR^i} \]

    • R 称为计数的 基数
    • a_i 是第i位的 系数
    • R^i 称为第i位的

十进制

  • 基数为10, 低位和相邻高位之间的关系为: 逢十进一

  • 多项式表示法

    \[(N)_{10} = \sum_{i=-m}^{n-1}{a_i \times 10^{i}} \]

    • 其中, a_i 是第i位的系数, 如果N的整数有n位, 小数有m位, 则:

      \[i \in [ n - 1, 0] \cup[-1, -m] \]

二进制

  • 每一位仅有0和1两个可能的数码

  • 计数基数为2, 进位关系为:逢二进一

  • 任何一个二进制数D均可以展开为:

    \[(N)_{2} = \sum_{i=-m}^{n-1}{a_i \times 2^{i}} \]

    • 如: (101.11)2

      \[= 1×2^2 + 0×2^1 + 1×2^0 + 1×2^{-1} + 1×2^{-2} \]

八进制

  • 八个 数码:0~7

  • 计数基数8, 进位关系为: 逢八进一

    \[(N)_{8} = \sum_{i=-m}^{n-1}{a_i \times 8^{i}} \]

    • 如: (145.37)8

      \[=1×8^2 + 4×8^1 + 5×8^0 + 3×8^{-1} + 7×8^{-2} \]

十六进制

  • 十六个不同数码: 0 ~ 9A, B, C, D, E, F

  • 计数基数16, 进位关系为: 逢十六进一

    \[(N)_{16} = \sum_{i=-m}^{n-1}{a_i \times 16^{i}} \]

    • 如: (4C.F8)16

      \[=4×16^1 + C×16^0 + F×16^{-1} + 8×16^{-2} \]

  • 十六进制中的A ~ F与十进制的对应关系为:
    • A ~ 10
    • B ~ 11
    • C ~ 12
    • D ~ 13
    • E ~ 14
    • F ~ 15

进制转换

进制互换方法

  • 十进制转换成任意进制R的普遍方法:

    1. 小数部分乘以R取进位

    2. 整数部分除以R取余数 注意方向

  • 任意进制R转换成十进制的普遍方法:

    • 按多项式展开并计算;
  • 二进制和十六/八进制相互转换的方法:

    • 按1位十六/八进制对应于4位/3位/二进制数的对应关系进行转换
  • 任意进制M和任意进制N之间的相互转换方法,

    1. 先将M(N)进制数转换成十进制数,

    2. 再将十进制数转换成N(M)进制数

二 > 十

  • 按权展开法: 将二进制数展开,再将各项的, 数值按十进制数相加,即得到十进制的值;

    • 例 (1101.011)2

      \[\begin{align} &= 1×2^3 +1×2^2 +0×2^1 +1×2^0 +0×2^{-1} +1×2^{-2} +1×2^{-3} \&= 8 + 4 + 0 + 1 + 0 + 0.25 + 0.125 \&= (13.375)_{10} \end{align} \]

十 > 二

  • 整数部分

    • 对于十进制整数(N)10, 假设等值的二进制为:

      \[(a_{n-1}a_{n-2}\cdots a_0)_2 \]

    • 那么,

      \[\begin{align} (N)_{10} &= a_{n-1}2^{n-1}+a_{n-2}2^{n-2}+...+a_12^1 + a_02^0 \&= 2(a_{n-1}2^{n-2}+a_{n-2}2^{n-3}...+a_1) + a_0 \end{align} \]

    • 则: 将(N)10 除2, 余数为a_0;

    • 如果上式括号内的部分(商)再除以2,余数即a_1;

    • 依此类推, 即可求得:

      \[a_2a_3...a_{n-2}a_{n-1} \]

    • 由以上分析出来胡规律, 可以得到整数部分的转换方法:

      • 将十进制数反复除2逆序取余数
  • 小数部分

    • 对于十进制小数(S)10, 假设等值的二进制数为:

      \[(0.a_{-1} a_{-2} a_{-3}...a_{-m})_2 \]

    • 那么,

      \[\begin{align} (S)_{10} &= a_{-1}2^{-1} + a_{-2}2^{-2}+...+a_{-m}2^{-m} & (1-1)\2(S)_{10} &= a_{-1}+(a_{-2}2^{-1}+a_{-3}2^{-2}+...+a_{-m}2^{-m+1}) &(1-2) \end{align} \]

    • 规律: 将(S)10乘以2, 整数进位就是a_-1

    • 对式(1-2)中括号内部分乘以2, 整数进位即:

      \[a_{-2} \]

    • 依次类推, 既得:

      \[a_{-3}a_{-4}...a_{-m} \]

    • 由前面的分析可以得到小数部分的转换方法:

      • 将十进制数反复乘2进行进位, 取顺序进位值
    • 不是所有十进制小数都能完整转换为二进制小数.可能过程会丢失精度.

二 > 十六

  • 四位二进制数对应一位十六进制数, 由位到位排列

  • 不足四位的,整数部分高位补0,小数部分低位补0

  • 例如: (11010110.0101101)2

    \[\begin{align} (& \underline{1101} \ \underline{0110}.\underline{0101}\ \underline{1010})_2 \ & \ \ \ \downarrow \ \ \ \ \downarrow \ \ \ \ \ \ \downarrow \ \ \ \ \downarrow \ = (&\ \ \ D \ \ \ \ \ \ 6 \ \ \ . \ \ \ \ 5 \ \ \ \ \ A \ \ )_{16} \end{align} \]

二 > 八

  • 转换方法: 每三位二进制数对应一位八进制数, 由低位到高位排列

  • 不足三位的,整数部分高位补0,小数部分低位补0。

  • 例如: (11010110.01011010)2

    \[\begin{align} (& \underline{011} \ \underline{010} \ \underline{110}. \underline{010} \ \underline{110} \ \underline{100})_2 \ & \ \downarrow \ \ \ \downarrow \ \ \downarrow \ \ \ \ \downarrow \ \ \ \downarrow \ \ \ \downarrow \ = (&\ \ 3 \ \ \ \ \ 2 \ \ \ \ \ 6. \ \ \ \ \ 2 \ \ \ \ \ 6 \ \ \ \ \ 4 \ \ )_{8} \end{align} \]

十六 > 二

  • 转换方法: 与二 > 十六转换类似,将十六进制数的每一位用等值的四位二进制数代替。

  • 例如: (7C5.F9)16

    \[\begin{align} (& \ \ \ 7 \ \ \ \ \ \ \ C \ \ \ \ \ 5. \ \ \ \ \ \ \ F \ \ \ \ \ \ \ 9 \ \ \ )_{16} \ & \ \ \downarrow \ \ \ \ \ \downarrow \ \ \ \ \downarrow \ \ \ \ \ \ \downarrow \ \ \ \ \ \downarrow \= (& 0111 \ 1100 \ 0101. \ 1111 \ 1001)_2 \\end{align} \]

八 > 二

  • 与八 > 二转换类似,将八进制数的每一位用等值的三位二进制数代替

    \[\begin{align} (&\ \ 7 \ \ \ \ \ 5 \ \ \ \ 4. \ \ \ \ 3 \ \ \ \ \ 6 \ \ )_{8} \& \ \downarrow \ \ \ \downarrow \ \ \downarrow \ \ \downarrow \ \ \ \downarrow \= (& 111 \ 101 \ 100. 011 \ 110)_2 \ \end{align} \]

十六 > 十

  • 方法:与二 - 十 转换类似,利用式(1-5)将十六进制数按权展开,相加即得。

  • 八进制与十六进制方法相同

  • 例: (B8E.A)16

    \[\begin{align} &= B×16^2 +8×16^1 +E×16^0 +A×16^{-1} \&= 11×16^2 +8×16^1 +14×16^0 +10×16^{-1} \&= 2816+128+14+0.625 \&=(2958.625)_{10} \end{align} \]

十 > 十六

  • 转换方法1:先将十进制数转换为二进制数,再将二进制数转换为十六进制数。

  • 转换方法2:与十进制转换成二进制的方法类似,小数部分乘以16取进位,整数部分除以16取余数。

  • 八进制与十六进制方法相同。

  • 例如: (795.6015625)10 = (31B.9A)16

    技术分享图片

  • 十进制转换成任意进制R的普遍方法:小数部分乘以R取进位,整数部分除以R取余数。

    • 注意最先得到的都是离小数点最近的那一位

数制与进制转换

原文:https://www.cnblogs.com/ieeqc/p/14457374.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!