• 十进制小数转换为二进制


     一、十进制小数转化为二进制小数

    十进制小数转换为二进制小数采用的方法:乘 2 取整,顺序排列

    具体做法:

    • 用 2 乘十进制小数,可以得到成积,
    • 将乘积的整数部分取出,再用剩余的小数部分乘 2,可以得到一个积。
    • 乘积的整数部分取出,再用剩余的小数部分乘 2,可以得到一个积。
    • .........

    按照这个步骤重复多次,直到乘积中的小数部分为 0。

    此时0 或 1为2进制的最后一位。或是达到要求的精度为止。

    然后将取出的整数部分顺序排列起来,先取出来的整数作为二进制的高位有效位,后取的整数作为低位的有效位(顺序提取,自上而下)

    实例1:


     0.1875 = (0.0011)B

    0.1875* 2 = 0.375 _______  取出整数部分 0;

    0.375 * 2 = 0.75 ————— 取出整数部分 0;

    0.75 * 2 = 1.5 —————— 取出整数部分 1;

    0.5 * 2 = 1.0   —————— 取出整数部分 1;

    顺序取出,所以最后结果为 0.0011...

    实例2:


     0.2 = (0.00110011)B

    0.2 * 2 = 0.4 ——————— 取出整数部分 0;

    0.4 * 2 = 0.8 ——————— 取出整数部分 0;

    0.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.00110011

     

    二、二进制小数转换成十进制

    二进制转换成十进制的基本做法是:将二进制数首先写成加权系数展开式,然后按十进制加法规则求和,按权相加。

    实例1:


     (1101.01)B 转换成十进制的小数

    1*(2^3) + 1*(2^2) + 0*(2^1) + 1*(2^0) + 0*(2^ -1) + 1*(2^ -2)

    = 8 + 4 + 0 +1 + 0 + 0.25

    = 13.25

    实例2:


     (1.101)B转换成十进制小数

    1*(2^0) + 1*(2^ -1) + 0*(2^ -2) + 1*(2^ -3)

    = 1 + 0.5 + 0.125

    = 1.625

    三、十进制数转换为二进制数

    十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换,然后再合并。

    十进制整数转换为二进制整数采用 除2取余,倒序排列 的方式。

    具体方法:

    • 十进制整数除以 2 ,可以得到一个商和余数;
    • 再用 2除商,又可以得到一个商和余数;
    • ……

    重复运算,直到商为 0 为止,然后再把得到的余数作为二进制的低位有效,得到的余数作为二进制的高位有效位,依次排列起来。

  • 相关阅读:
    类成员函数的重载、覆盖和隐藏区别 (C++)(转)
    man时括号里的数字是啥意思
    Redis事务
    功能接口
    持久化方式
    宿主
    路由
    静态文件
    Log4Net 配置
    Redis命令与配置
  • 原文地址:https://www.cnblogs.com/nyw1983/p/11986702.html
走看看 - 开发者的网上家园