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

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

方法:除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
相关推荐
穿越临界点12 小时前
动态规划(DP)
算法·动态规划·贝尔曼
leoufung12 小时前
LeetCode 50. Pow(x, n):从 O(n) 到 O(log n) 的快速幂彻底搞懂
算法·leetcode·职场和发展
@小码农12 小时前
2026年信息素养大赛【星火征途】图形化编程复赛和决赛模拟题B
开发语言·数据结构·c++·算法
人道领域13 小时前
【LeetCode刷题日记】347.前k个高频元素
java·数据结构·算法·leetcode
七颗糖很甜13 小时前
台风数据免费获取教程
大数据·python·算法
AI科技星13 小时前
《全域数学》第一部·数术本源
算法·机器学习·数学建模·数据挖掘·量子计算
阿Y加油吧13 小时前
二刷 LeetCode:118. 杨辉三角 & 198. 打家劫舍 复盘笔记
笔记·算法·leetcode
深邃-13 小时前
【数据结构与算法】-二叉树(1):树的概念与结构,二叉树的概念与结构
数据结构·算法·链表·二叉树··顺序表
风筝在晴天搁浅13 小时前
手撕归并排序
数据结构·算法·排序算法
lynnlovemin13 小时前
C++高精度加减乘除算法详解
开发语言·c++·算法·高精度