小数和整数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
相关推荐
wangjialelele22 分钟前
平衡二叉搜索树:AVL树和红黑树
java·c语言·开发语言·数据结构·c++·算法·深度优先
驱动探索者38 分钟前
linux mailbox 学习
linux·学习·算法
ringking12341 分钟前
autoware-1:安装环境cuda/cudnn/tensorRT库函数的判断
人工智能·算法·机器学习
大闲在人1 小时前
8. 供应链与制造过程术语:产能
算法·制造·供应链管理·智能制造·工业工程
一只小小的芙厨1 小时前
寒假集训笔记·以点为对象的树形DP
c++·算法
历程里程碑1 小时前
普通数组----合并区间
java·数据结构·python·算法·leetcode·职场和发展·tornado
执风挽^2 小时前
Python基础编程题2
开发语言·python·算法·visual studio code
Z9fish2 小时前
sse哈工大C语言编程练习20
c语言·开发语言·算法
晓13132 小时前
第六章 【C语言篇:结构体&位运算】 结构体、位运算全面解析
c语言·算法
iAkuya2 小时前
(leetcode)力扣100 61分割回文串(回溯,动归)
算法·leetcode·职场和发展