小数和整数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
相关推荐
J2虾虾4 分钟前
C语言 typedef 用法
c语言·数据结构·算法
hunterkkk(c++)13 分钟前
线段树例题
算法
故渊at23 分钟前
第二板块:Android 四大组件标准化学理 | 第七篇:Activity 页面载体与任务栈算法
android·算法·生命周期·activity·任务栈
兰令水30 分钟前
leecodecode【区间DP+树形DP】【2026.6.10打卡-java版本】
java·算法·leetcode
weixin199701080161 小时前
[特殊字符] 1688开放平台API Sign签名算法详解(Java / Python / PHP 实现)
java·python·算法
未若君雅裁1 小时前
JVM 垃圾回收算法与分代回收机制
java·jvm·算法
智者知已应修善业1 小时前
【51单片机初始化D5-D8亮,每按键按下D1到D4全亮,再按下恢复,如此循环】2024-3-26
c++·经验分享·笔记·算法·51单片机
8Qi82 小时前
LeetCode 4:寻找两个正序数组的中位数 —— 二分查找法
java·算法·leetcode·职场和发展·二分查找
8Qi82 小时前
LeetCode 32:最长有效括号 —— 栈 + 标记法 题解
java·数据结构·算法·leetcode·职场和发展··括号匹配