小数和整数10进制转2进制算法

Source

一、十进制整数转二进制(整数部分)

方法:除2取余,逆序排列

步骤:

  1. 将十进制整数不断除以 2,记录每次的余数(0 或 1)。
  2. 直到商为 0 时停止。
  3. 将余数从下到上(即最后一次的余数是最高位)排列,得到二进制数。

例子:将十进制数 13 转换为二进制

13 ÷ 2 = 6 余 1
6 ÷ 2 = 3 余 0
3 ÷ 2 = 1 余 1
1 ÷ 2 = 0 余 1

余数从下到上排列:1101
所以,13 的二进制是 1101


二、十进制小数转二进制(小数部分)

方法:乘2取整,顺序排列

步骤:

  1. 将小数部分不断乘以 2,记录每次乘积的整数部分(0 或 1)。
  2. 用新产生的小数部分继续乘以 2,直到小数部分为 0 或达到所需精度。
  3. 将整数部分从上到下(即第一次的整数是最高位)排列,得到二进制小数。

例子:将十进制小数 0.625 转换为二进制

0.625 × 2 = 1.25 → 整数部分为 1,剩下小数 0.25
0.25 × 2 = 0.5 → 整数部分为 0,剩下小数 0.5
0.5 × 2 = 1.0 → 整数部分为 1,剩下小数 0(停止)

整数部分从上到下排列:101
所以,0.625 的二进制是 0.101


三、十进制数同时包含整数和小数部分(如 13.625)

分别转换整数和小数部分,然后用小数点连接。

例子:13.625

  • 整数部分 13 → 1101
  • 小数部分 0.625 → 0.101
  • 所以,13.625 的二进制是 1101.101

四、注意事项

  1. 无限循环小数:有些十进制小数(如 0.1)转换为二进制时可能是无限循环的,这时需要根据精度要求进行截断。
    • 例如:0.1 的二进制是 0.0001100110011...(循环)。
  2. 负数:负的十进制数转换为二进制通常使用补码表示(先转换绝对值,再取反加一),但这是另一个话题。

总结表格:

部分 方法 例子(十进制) 二进制结果
整数部分 除2取余,逆序排列 13 1101
小数部分 乘2取整,顺序排列 0.625 0.101
整体 合并两部分 13.625 1101.101