zoukankan      html  css  js  c++  java
  • 如何求一个数的二进制的值

    在学校的时候,教科书上教过如何求得一个数的二进制如何表示,但是求解过程有啰嗦又麻烦。

    我用我自己的方法,这个方法比较笨,但是够简单。

    十进制整数如何转化为二进制数

               算法很简单。

        举个例子,11表示成二进制数:

                         11/2=5   余   1

                           5/2=2   余   1

                           2/2=1   余   0

                           1/2=0   余   1

                              得0结束        

        11的二进制表示为(从下往上):1011

    这里提一点:只要遇到除以后的结果为0了就结束了,大家想一想,所有的整数除以2是不是一定能够最终得到0。换句话说,所有的整数转变为二进制数的算法会不会无限循环下去呢?绝对不会,整数永远可以用二进制精确表示 ,但小数就不一定了。

    十进制小数如何转化为二进制数

      算法是乘以2直到没有了小数为止。

      举个例子,0.9表示成二进制数

            0.9*2=1.8   取整数部分  1

                         0.8(1.8的小数部分)*2=1.6    取整数部分  1

                         0.6*2=1.2   取整数部分  1

                         0.2*2=0.4   取整数部分  0

                         0.4*2=0.8   取整数部分  0

                         0.8*2=1.6   取整数部分  1

                         0.6*2=1.2   取整数部分  0

                        .........      0.9二进制表示为(从上往下): 1100100100100......

               注意:上面的计算过程循环了,也就是说*2永远不可能消灭小数部分,这样算法将无限下去。很显然,小数的二进制表示有时是不可能精确的 。其实道理很简单,十进制系统中能不能准确表示出1/3呢?同样二进制系统也无法准确表示1/10。这也就解释了为什么浮点型减法出现了"减不尽"的精度丢失问题。

  • 相关阅读:
    JVM -- Full GC触发条件总结以及解决策略
    java实现-图的相关操作
    Integer的intValue()方法
    Java transient关键字
    Redis 单线程模型介绍
    String类的intern()方法 -- 重用String对象,节省内存消耗
    数据库阿里连接池 druid配置详解
    redis 实现发布/订阅模式
    Redis实现队列
    redis 实现分布式锁
  • 原文地址:https://www.cnblogs.com/Williamwen/p/11677585.html
Copyright © 2011-2022 走看看