zoukankan      html  css  js  c++  java
  • 进制表示以及转换

    不同进制数的表示

    数的根本乃是对于数量的统计。一个n进制的数,其核心定义为:

    [[a_{p}cdots a_{2}a_{1}.a_{-1}a_{-2}cdots a_{q}]_{n} = a_{p}*n^{p-1}+cdots +a_{2}*n^{1}+a_{1}*n^{0}+a_{-1}*n^{-1} + a_{-2}*n^{-2}cdots a_{q}*n^{q} ]

    • 左侧是该数的符号表示
    • 右侧是该数的实际数量表示。而n则是决定了该数每一位的权值,也就是进制。

    转换

    转换的核心仍然是数的定义,及上述的公式。

    [[a_{p}cdots a_{2}a_{1}.a_{-1}a_{-2}cdots a_{q}]_{n} = a_{p}*n^{p-1}+cdots +a_{2}*n^{1}+a_{1}*n^{0}+a_{-1}*n^{-1} + a_{-2}*n^{-2}cdots a_{q}*n^{q} ]

    如果你能够以任意进制计算公式右侧的数量,那么恭喜你,你可以不用继续向下看了,因为你已经完成了对于任意进制之间的转换,而且十分的高效。

    但是,一般人,比如说我,仅仅会以十进制完成计算,那么就必须以十进制为基点(桥梁)来完成其他进制的转换工作。所以下面的转换将以十进制为核心展开。

    n进制》十进制

    [[a_{p}cdots a_{2}a_{1}.a_{-1}a_{-2}cdots a_{q}]_{n} = a_{p}*n^{p-1}+cdots +a_{2}*n^{1}+a_{1}*n^{0}+a_{-1}*n^{-1} + a_{-2}*n^{-2}cdots a_{q}*n^{q} ]

    十进制》n进制

    将十进制将n进制进行转换时,需要将概述的整数部分以及小数部分进行分离,因为它们使用的是完全不同的方法,甚至是对立的。

    整数部分

    [egin{align} && [m]_{10} & = [a_{p}cdots a_{2}a_{1}]_{n} \ && [[m]_{10} & = a_{p}*n^{p-1}+cdots +a_{2}*n^{1}+a_{1}*n^{0}\ end{align} ]

    我们的目的,就是计算得到 {a1, a2,... , ap} 。

    需要注意的是:两侧的运算都是十进制运算。

    计算流程为:

    • 将m进行除以n,那么余数为a1,商为m1
    • 将m1进行除以n,那么余数为a2,商为m2
    • .....
    • 最终,余数为ap,商为0。

    上面的方法可以形式化为:

    img

    小数部分

    [egin{align} && [m]_{10} & = [0.a_{1} a_{2}cdots a_{q}]_{n} \ && [[m]_{10} & = a_{1}*n^{-1}+a_{2}*n^{-2}+cdots+a_{q}*n^{-q}\ end{align} ]

    我们的目的,就是计算得到 {a1, a2,... , ap} 。

    需要注意的是:两侧的运算都是十进制运算。

    计算流程为:

    • 将m进行乘n,那么整数部分为a1,小数部分为m1
    • 将m1进行乘n,那么整数部分为a2,小数部分为m2
    • .....
    • 最终,整数数部分为ap,小数部分为0。

    引用

    引用自:理解进制转换的原理

  • 相关阅读:
    JAVA 读取Properties文件内容乱码 解决方法
    java代码求IP和mac地址
    jsp 清除session的方法
    Go语言字符串和正则表达式
    go语言:字符串操作
    博客园美化基本完成!!!
    美化了一下页面
    第一天:初入博客园
    c语言实参与形参的区别
    c链表中指针的一些用法要点
  • 原文地址:https://www.cnblogs.com/zqybegin/p/13831587.html
Copyright © 2011-2022 走看看