• 计算机的进制转换


    复习一下二进制的理论知识。

    计算机为什么要用二进制表示一切数据?

    因为2个数可以表示一切,而且电极高低2种对硬件人员制作来说比较友好。

    于是0就表示为空,1就表示有东西。

    十进制转换为二进制

    二进制是由0和1组成的,如01,0001他们都是一样的。因为都只有末尾1个1。其他都是空。

    我随便写个2进制数 11010

    观察一下,他是由什么组成?

    是不是由4位组成,ok,这个位就是他的长度。那他的长度怎么得到的?假设给你1个十进制位的数,比如1,那么他的二进制就是1,给你一个0,那他二进制就是0,给你一个2,那他的二进制就是10,给你个3,那他就是11。他们就是通过向左边加1位,来记录十进制的数的。

    然后发现,好像有下面一个公式能够记录它的位数。于是就只用记住公式,不用每次都推敲了

    知道了这个,我们还要知道一个规则

    0是0,1是1,10是2,11是3,100是4,101是5,110是6,111是7,1000是8

    通过观察发现

    2^次方对应的分别是10,100,1000的二进制

    而这个次方又是位数。

    所以另一个记住的是2^1次方对应的二进制是10,2^2次方就是100,每多一个次方,在后面加1个0.

    学会了这2个公式,现在你已经出师了!

    来算一下26的二进制是多少。

    首先计算他的位数。log2为底的26,结果2^4是16,那显然不满足,2^5次方是32,覆盖了26,所以用32是可以表示的,那32是5位。

    所以位是5.

    10000,是16

    1000,是8

    24,还差2

    再加1个2,2对应的2进制是10

    那就是11010

    然后比如这个11010

    他的十进制是多少?

    他是一个4位的数,2^4次方是16,那么10000就是16。然后后面1000是一个3位的数,那么就是2^3次方是8,那就是16+8然后最后是一个10,10是2,最后就是16+8+2=26.

    现在已经可以做到随便一个数就能二进制转换了。随便给一个806,他的二进制是多少

    log2为底806,是在2^9次方,512和2^10次方,1024之间。

    那肯定要包含他,只有1024大于他,所以位数是10

    1000000000,这个就是10位,再根据我们开头的公式,2的1次方是10,那他的9次方就是1*10^9。代表的是512。

    1*10^8次方=100000000代表的是256

    512+256=768

    如果此时在加10^7次方,就是128,那就超了,然后退1级10^6次方,加64,也会超,所以只能加32,也就是10^5次方。

    那么现在就是1100100000

    768+32=800,现在还差6.那就简单了,2的1次方是10,2的2次方是100,2的3次方是1000。那3位就够了,100代表的是4,110就是6.那就在加110

    最终答案就是1100100110

    转过去也是一样的,先数,他是多少位,10位数。2^9次方就代表的是最开头的1

    然后就是2^8次方代表第二个1,以此类推

    2^9+2^8+2^5+2^2+2^1=806。二进制转换10进制就简单多了。

    完结散花,不过一般考试不会给你上百,甚至上千这种。这种算起来麻烦,一般给的都是百内的数,随便算。

    写着写着就莫名其妙用自己的方法推导了一遍。哈哈

  • 相关阅读:
    Web 性能优化:TLS
    三维量子成像雷达
    《算法通关村——二分查找在旋转数字中的应用》
    如何实现Debian工控电脑USB接口安全管控
    vue3使用swiper6.7.0写轮播图,按钮在轮播图外面
    Git教程
    一篇文章告诉你什么python自动化测试xpath语法
    等时替代模型( Isotemporal Substitution Model)
    Redisson分布锁原理分析及源码解读
    c++ 高阶函数 numeric库
  • 原文地址:https://blog.csdn.net/qq_38403590/article/details/133693613