十进制转二进制:凑数法(填1法)

十进制转二进制:凑数法(填1法)

一、先搞懂:二进制的每一位"值多少钱"

十进制里,每一位有自己的"身价":个位是1,十位是10,百位是100。

二进制也一样,只不过身价不是10倍10倍地涨,而是2倍2倍地涨:

位置 第8位 第7位 第6位 第5位 第4位 第3位 第2位 第1位
身价 128 64 32 16 8 4 2 1

这一行就是整个方法的"工具"。 每次做题前,先把它默写出来。

怎么记?从1开始,每次翻倍:1、2、4、8、16、32、64、128。

二、二进制的规则只有一条

每一位只能填 0 或 1:

  • 填 1:表示"这一位的身价我要了"
  • 填 0:表示"这一位的身价我不要"

所以二进制数 00101101 的意思是:把填了1的那些位的身价加起来。

32 + 8 + 4 + 1 = 45

所以 00101101 就是十进制的45。

转换其实就是这个过程倒过来: 给你45,让你找出该选哪几个身价,加起来正好是45。

三、凑数法的操作步骤

从最大的身价(128)开始,从大到小逐个判断:

  1. 手里剩下的数,够不够减这一位的身价?
  2. 够减 → 这一位填 1,然后把身价减掉,剩下的数继续往下走
  3. 不够减 → 这一位填 0,剩下的数不变,继续往下走
  4. 一直走到最后一位(身价1),剩下的数应该正好是0

四、例题1:把 45 转成二进制

先写出工具:

身价 128 64 32 16 8 4 2 1

手里的数:45

  • 128 :45 够减128吗?不够 → 填 0,还是45
  • 64 :45 够减64吗?不够 → 填 0,还是45
  • 32 :45 ≥ 32,够! → 填 1 ,45 − 32 = 13
  • 16 :13 够减16吗?不够 → 填 0,还是13
  • 8 :13 ≥ 8,够! → 填 1 ,13 − 8 = 5
  • 4 :5 ≥ 4,够! → 填 1 ,5 − 4 = 1
  • 2 :1 够减2吗?不够 → 填 0,还是1
  • 1 :1 ≥ 1,够! → 填 1 ,1 − 1 = 0 ✓

结果:

身价 128 64 32 16 8 4 2 1
填写 0 0 1 0 1 1 0 1

45 = 00101101(二进制) ,前面的0可以省略,写成 101101 也行。

最后剩下0,说明没算错。

五、例题2:把 200 转成二进制

手里的数:200

  • 128 :200 ≥ 128 → 填 1 ,200 − 128 = 72
  • 64 :72 ≥ 64 → 填 1 ,72 − 64 = 8
  • 32 :8 不够 → 填 0
  • 16 :8 不够 → 填 0
  • 8 :8 ≥ 8 → 填 1 ,8 − 8 = 0
  • 4 :0 不够 → 填 0
  • 2 :0 不够 → 填 0
  • 1 :0 不够 → 填 0

结果:200 = 11001000(二进制)

小发现: 当手里的数减到0了,后面所有位自动填0,不用再算。

六、检验:怎么知道自己做对了?

把填1的那些位的身价加起来,看是不是等于原来的数。

检验200:128 + 64 + 8 = 200 ✓

这一步一定要养成习惯,只要几秒钟,能抓住绝大多数粗心错误。

七、几个常见问题

Q:我怎么快速判断从哪一位开始?

找不超过目标数的最大身价。比如目标是45,最大的不超过45的身价是32,那么32前面的位(64、128)全是0。

Q:最多能表示多大的数?

8位全填1:128+64+32+16+8+4+2+1 = 255。所以这个方法适用于0到255之间的数。

Q:超过255怎么办?

很简单,把工具表往左再延长:256、512、1024......继续翻倍,方法完全不变。

八、自己练习

先自己做,再看答案。

  1. 13
  2. 37
  3. 100
  4. 150
  5. 255

答案

  1. 13 = 00001101(8 + 4 + 1)
  2. 37 = 00100101(32 + 4 + 1)
  3. 100 = 01100100(64 + 32 + 4)
  4. 150 = 10010110(128 + 16 + 4 + 2)
  5. 255 = 11111111(全部都要)

九、一句话总结

写出身价表 → 从大到小逐位问"够减吗" → 够就填1并减掉,不够就填0 → 最后剩0说明对了。

这个方法的好处是:每一步你都知道自己在干什么,因为你始终在回答同一个问题------"这一位的身价,我要不要?"

相关推荐
行者全栈架构师1 小时前
【共创稿事节】双引擎智能相册:HarmonyOS 7(API 26)文搜图 × 图像超分端侧 AI 联动实战
前端·算法·架构
小蒋观天下1 小时前
【无标题】红外补光近距过曝、远距欠曝:导致车牌AI识别失效调试
人工智能·深度学习·数码相机·算法·机器学习·ai大模型
吞下星星的少年·-·2 小时前
牛客周赛 119B题(贪心)
算法·贪心
NEFU_Jyj2 小时前
牛客周赛R166(max型瓶颈最短路,前后缀DP合并)
算法·深度优先
Tisfy3 小时前
LeetCode 3644.排序排列:不对则与(脑筋急转弯)
数据结构·算法·leetcode·题解·位运算
lisw054 小时前
分岔论揭示演化突变密码
开发语言·算法·数学建模
aqiu1111114 小时前
C++ TopK:使用 nth_element 快速求最小 K 个数(蓝桥杯 / LeetCode 可用)
算法
Suprman4 小时前
平面排版问题的数学建模与算法设计
算法·数学建模·排序算法·排版套料
FPGA信号处理4 小时前
【应用随机过程】:更新过程与马尔可夫链入门
算法·概率论