• 将十进制数字转换为二进制


    在开发中其实数字转换进制是经常的事,但是它是如何实现转换的呢?

    先随便拿一个数字来计算,就定为 28 吧,要将 一个十进制的 28 转换为 二进制应该怎么去做呢?

      其实很简单,我们来看例子: 先将 28 除以 2, 即 28 / 2 = 14 余 0, 接着 将 14 / 2 = 7 余 0 ,接着将 7 / 2 = 3  余 1 , 接着将 3 / 2 = 1 余 1 

      最后将 最后一个商 从 后 向前拼接起来 即: 28转换为二进制 则为  11100,

      那么我们来验证一下是否是对的

      

     结果证明是对的,那我们再来一个验证这个方法:

      拿一个大一点的数,就定 453 吧

      第一步,计算:

        453 / 2 = 226 ······ 1

        226 / 2 = 113 ······ 0

        113 / 2 = 56  ······ 1

        56 / 2 = 28 ······ 0

        28 / 2 = 14 ······ 0

        14 / 2 = 7 ······ 0

        7 / 2 = 3  ······ 1

        3 / 2 = 1 ······ 1

      第二步,拼接:

      最后一个商 为 1 ,然后把这个商和这些余数从后向前拼接起来,即 111000101

      那么我们再去验证一下结果:

      

       结果说明这个方法是正确的。

      那如果我想 将一个二进制转换为一个十进制 应该怎么做呢?

      其实也很简单,例如现在有一个二进制 为 111000101,那么我们是从后向前来进行排序来进行计算。

      第一步,计算:

        1 * 2的0次方 = 1

        0 * 2的1次方 = 0

        1 * 2的2次方 = 4

        0 * 2的3次方 = 0

        0 * 2的4次方 = 0

        0 * 2的5次方 = 0

        1 * 2的6次方 = 64

        1 * 2的7次方 = 128

        1 * 2的8次方 = 256

      第二步,将结果相加起来:1 + 0 + 4 + 0 + 0 + 0 + 64 + 128 + 256 = 453

      

    接下来是 16 进制和 10 进制的转换

      在这里我们先看一个对照表:

      

      在这里作出这个表的说明:其实不管是几进制,就是逢几进 1 的意思,例如我们平时最常用的十进制计算逢10进1,在进为之前有0 ,1 ,2 ,3, 4, 5, 6, 7, 8 ,9 代表,

      当然,如果是8进制,那就是 0, 1, 2, 3, 4, 5, 6 ,7 

      如果是 12 进制就是 0 到 B,

      如果是16 进制就是 0 到 F,当然还有很多其它的进制,其实都是一样的道理。

       在16进制中我们经常看到会有一些大写的字母,例如: 2AF2BC

      其实我们只要知道A B C D E F 分别代表着一个数字就可以了,A代表数字 10,B代表数字 11,C代表数字 12, D代表数字 13, E代表数字14,F代表数字15

      那接下来就简单了,因为计算其实和二进制是差不多的。

      我们来看一个例子:将十六进制 2AF2BC 转换为 十进制

      第一步:从后向前来进行排序来进行计算。

      首先是C,它代表的是12,

      那就是 12 * 16的0次方 = 12

      B代表的是11,即:11 * 16的1次方 = 176

      接下来是 2 * 16 的2次方 = 512

      F代表的是15,即:15 * 16的3次方 = 61440

      A代表的是10,即:10 * 16的4次方 = 655360

      接下来是2 * 16的5次方 = 2097152

      第二步,把它们相加:12 + 176 + 512+ 61440 + 655360 + 2097152 = 2814652

      接下来我们看一下效果:

      

       那接下来我们将十进制转换为 十六进制,计算方法和二进制是一样的其实

      那我们先随便定一个数字,例如:2589

      第一步,计算:

        2589 / 16 = 161  ······ 13

        161 / 16 = 10  ······ 1

      第二步,拼接。最后一个商为10则为A,1直接为1,13为 D , 则最后结果为 A1D

      

       

      最后我们在来看一下12进制和10进制的转换

      例如十进制的 18 转换为 12进制

      18  / 12 = 1 ······ 6

      最后一个商 是 1 拼接起来就是 16

      

       好,我们来个大一点的数字:

      例如: 241

      241 / 12 = 20 ······ 1

      20 / 12 = 1······ 8

      拼接起来就是:181 我们看一下结果:

      

       那我们来将12进制转换为 10 进制看看,

      如: 5A3B

      第一步,计算:

       B代表11,则 11 * 12的0次方 = 11

       3 * 12 的1 次方 = 36

       A代表10,则 10 * 12的2次方 = 1440

       5 * 12的3次方 = 8640

      第二步,相加: 11 + 36 + 1440 + 8640 = 10127

      

      其实就是怎么简单,所有的进制都可以通过这样的方法来进行转换

  • 相关阅读:
    QT移植详解
    如何构建Qt4.7.0嵌入式开发环境
    Qt触摸屏、键盘的驱动[转]
    【详解】如何编写Linux下Nand Flash驱动
    QT安装 -->Error: register or shift expression expected -- `orr r3,r2,lsl#16'
    QT环境搭建常见的bug解决 -->ld: cannot find –lbootstrap 错误
    SDK支付流程
    IOS与Unity交互
    Android
    [转]个人对AutoResetEvent和ManualResetEvent的理解
  • 原文地址:https://www.cnblogs.com/hermit-gyqy/p/12170563.html
Copyright © 2020-2023  润新知