小数和整数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
相关推荐
无极低码14 小时前
ecGlypher新手安装分步指南(标准化流程)
人工智能·算法·自然语言处理·大模型·rag
软件算法开发15 小时前
基于海象优化算法的LSTM网络模型(WOA-LSTM)的一维时间序列预测matlab仿真
算法·matlab·lstm·一维时间序列预测·woa-lstm·海象优化
superior tigre16 小时前
22 括号生成
算法·深度优先
努力也学不会java17 小时前
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU
java·数据结构·人工智能·算法·缓存·面试
旖-旎17 小时前
二分查找(x的平方根)(4)
c++·算法·二分查找·力扣·双指针
ECT-OS-JiuHuaShan17 小时前
朱梁万有递归元定理,重构《易经》
算法·重构
智者知已应修善业18 小时前
【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25
经验分享·笔记·单片机·嵌入式硬件·算法·51单片机
khddvbe18 小时前
C++并发编程中的死锁避免
开发语言·c++·算法
C羊驼18 小时前
C语言:两天打鱼,三天晒网
c语言·经验分享·笔记·算法·青少年编程
菜菜小狗的学习笔记18 小时前
剑指Offer算法题(四)链表
数据结构·算法·链表