0


十进制小数 与 二进制小数 互转

1、十进制小数 转 二进制小数

公式
  1. 小数 * 2得到n1, 将n1的整数作为二进制数第一位;
  2. n1的小数 * 2得到n2, 将n2的整数作为二进制数第二位;
  3. n2的小数 * 2得到n3, 将n3的整数作为二进制数第三位;
  4. … 重复以上步骤,直到小数部分为0或者达到指定的精度即可。
例子一: 十进制0.1转二进制

0.1 * 2 = 0.2 →取整数部分0
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.6 * 2 = 1.2 →取整数部分1

可以看到0.1转2进制不管怎么乘2结果小数位不可能为0,是一个无限循环小数,只能截取一部分。
我们再将获得的整数部分组合起来
二进制为:0.00011001100110011001101(截取23位)

例子二: 十进制0.2转二进制

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.6 * 2 = 1.2 →取整数部分1

0.2转2进制同样是一个无限循环小数,只能截取一部分。
二进制为:0.00110011001100110011011(截取23位)

例子三: 十进制0.3转二进制

0.3 * 2 = 0.6 →取整数部分0
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 →取整数部分1

0.3转2进制同样是一个无限循环小数,只能截取一部分。
二进制为:0.01001100110011001100110(截取23位)

例子三: 十进制0.5转二进制

0.5 * 2 = 1.0 →取整数部分1

二进制为:0.1

我们可以看出,0.1和0.2转二进制的时候就已经失去精度了。

2、二进制小数 转 十进制小数

小数点后开始,依次乘以2的负一次方,2的负二次方,2的负三次方…

公式:
  1.                                     小数第                            1                            位                            ∗                                       2                                           −                                  1                                                       小数第1位 * 2^{-1}                     小数第1位∗2−1
    
  2.                                     小数第                            2                            位                            ∗                                       2                                           −                                  2                                                       小数第2位 * 2^{-2}                     小数第2位∗2−2
    
  3.                                     小数第                            3                            位                            ∗                                       2                                           −                                  3                                                       小数第3位 * 2^{-3}                     小数第3位∗2−3
    
  4.                                     小数第                            4                            位                            ∗                                       2                                           −                                  4                                                       小数第4位 * 2^{-4}                     小数第4位∗2−4 …
    
  5. 最后将所有计算结果求和,就能得到十进制小数了。
例子一: 二进制0.1转十进制
      0.1 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        1 
       
      
     
    
   
     0.1*2^{-1} 
    
   
 0.1∗2−1**= 0.5**
例子二: 二进制0.01001100110011001100110转十进制
      0 
     
    
      ∗ 
     
     
     
       2 
      
     
       1 
      
     
    
      + 
     
    
      1 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        2 
       
      
     
    
      + 
     
    
      0 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        3 
       
      
     
    
      + 
     
    
      0 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        4 
       
      
     
    
      + 
     
    
      1 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        5 
       
      
     
    
      + 
     
    
      1 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        6 
       
      
     
    
      + 
     
    
      0 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        7 
       
      
     
    
      + 
     
    
      0 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        8 
       
      
     
    
      + 
     
    
      1 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        9 
       
      
     
    
      + 
     
    
      1 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        10 
       
      
     
    
      + 
     
    
      0 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        11 
       
      
     
    
      + 
     
    
      0 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        12 
       
      
     
    
      + 
     
    
      1 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        13 
       
      
     
    
      + 
     
    
      1 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        14 
       
      
     
    
      + 
     
    
      0 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        15 
       
      
     
    
      + 
     
    
      0 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        16 
       
      
     
    
      + 
     
    
      1 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        17 
       
      
     
    
      + 
     
    
      1 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        18 
       
      
     
    
      + 
     
    
      0 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        19 
       
      
     
    
      + 
     
    
      0 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        20 
       
      
     
    
      + 
     
    
      1 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        21 
       
      
     
    
      + 
     
    
      1 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        22 
       
      
     
    
      + 
     
    
      0 
     
    
      ∗ 
     
     
     
       2 
      
      
      
        − 
       
      
        23 
       
      
     
    
   
     0*2^{1} + 1*2^{-2}+ 0*2^{-3}+ 0*2^{-4}+ 1*2^{-5}+ 1*2^{-6}+ 0*2^{-7}+ 0*2^{-8}+ 1*2^{-9}+ 1*2^{-10}+ 0*2^{-11}+ 0*2^{-12}+ 1*2^{-13}+ 1*2^{-14}+ 0*2^{-15}+ 0*2^{-16}+ 1*2^{-17}+ 1*2^{-18}+ 0*2^{-19}+ 0*2^{-20}+ 1*2^{-21}+ 1*2^{-22}+ 0*2^{-23} 
    
   
 0∗21+1∗2−2+0∗2−3+0∗2−4+1∗2−5+1∗2−6+0∗2−7+0∗2−8+1∗2−9+1∗2−10+0∗2−11+0∗2−12+1∗2−13+1∗2−14+0∗2−15+0∗2−16+1∗2−17+1∗2−18+0∗2−19+0∗2−20+1∗2−21+1∗2−22+0∗2−23

=

      0 
     
    
      + 
     
    
      0.25 
     
    
      + 
     
    
      0 
     
    
      + 
     
    
      0 
     
    
      + 
     
    
      0.03125 
     
    
      + 
     
    
      0.015625 
     
    
      + 
     
    
      0 
     
    
      + 
     
    
      0 
     
    
      + 
     
    
      0.001953125 
     
    
      + 
     
    
      0.0009765625 
     
    
      + 
     
    
      0 
     
    
      + 
     
    
      0 
     
    
      + 
     
    
      0.0001220703125 
     
    
      + 
     
    
      0.00006103515625 
     
    
      + 
     
    
      0 
     
    
      + 
     
    
      0 
     
    
      + 
     
    
      0.00000762939453125 
     
    
      + 
     
    
      0.000003814697265625 
     
    
      + 
     
    
      0 
     
    
      + 
     
    
      0 
     
    
      + 
     
    
      0.000000476837158203 
     
    
      + 
     
    
      0.000000238418579101 
     
    
      + 
     
    
      0 
     
    
   
     0+ 0.25+ 0+ 0+ 0.03125+ 0.015625+ 0+0+ 0.001953125+ 0.0009765625+ 0+ 0+ 0.0001220703125+ 0.00006103515625+0+ 0+ 0.00000762939453125+ 0.000003814697265625+ 0+ 0+ 0.000000476837158203+ 0.000000238418579101+ 0 
    
   
 0+0.25+0+0+0.03125+0.015625+0+0+0.001953125+0.0009765625+0+0+0.0001220703125+0.00006103515625+0+0+0.00000762939453125+0.000003814697265625+0+0+0.000000476837158203+0.000000238418579101+0

= 0.299999952316284179



本文转载自: https://blog.csdn.net/malu_record/article/details/133850560
版权归原作者 码鹿的笔记 所有, 如有侵权,请联系我们删除。

“十进制小数 与 二进制小数 互转”的评论:

还没有评论