十进制转二进制:凑数法(填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,然后把身价减掉,剩下的数继续往下走
- 不够减 → 这一位填 0,剩下的数不变,继续往下走
- 一直走到最后一位(身价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......继续翻倍,方法完全不变。
八、自己练习
先自己做,再看答案。
- 13
- 37
- 100
- 150
- 255
答案
- 13 = 00001101(8 + 4 + 1)
- 37 = 00100101(32 + 4 + 1)
- 100 = 01100100(64 + 32 + 4)
- 150 = 10010110(128 + 16 + 4 + 2)
- 255 = 11111111(全部都要)
九、一句话总结
写出身价表 → 从大到小逐位问"够减吗" → 够就填1并减掉,不够就填0 → 最后剩0说明对了。
这个方法的好处是:每一步你都知道自己在干什么,因为你始终在回答同一个问题------"这一位的身价,我要不要?"