从2的幂到1024的翻倍序列示意,展示数量和表示方式
阅读口径

本文讨论无符号非负整数的数学写法,不预设某种处理器的存储宽度。数字右下角的进制标记用于区分写法,本页直接写“二进制”或“十进制”。

每向左一位,位权乘以2

二进制从右向左的位权依次是1、2、4、8、16、32、64、128、256、512、1024。最右位对应2的0次方,所以第11位才对应2的10次方。1024恰好只需要最后这个位权:1×1024加上其余位的0,得到原数。书写10000000000时,可以先写1,再逐个数出10个0,避免把指数与总位数混为一谈。

连续除以2,余数倒着读

另一种方法是反复作带余除法:1024÷2=512余0,512÷2=256余0,继续得到128、64、32、16、8、4、2、1,直到1÷2=0余1。每次把余数记录在单独一行,最后从下往上读,得到1后接10个0。最先得到的余数对应最低位,因此直接按计算顺序读会把位置颠倒。

用1023和1025检查边界

1023可以写成512+256+128+64+32+16+8+4+2+1,因此二进制是10个1:1111111111。再加1时逐位进位,恰好得到10000000000。1025比1024多1,只需把最低位改为1,得到10000000001。三个相邻整数放在一起,可以同时检查位数、进位方向和最低位,而不是只记住一个字符串。

可执行检查单

  1. 01列出位权:从1开始连续乘2,写到1024,确认一共有11个位置。
  2. 02独立使用除2取余法:商变为0时停止,倒序拼接余数,不遗漏最后的1。
  3. 03把二进制还原:只对值为1的位置求位权之和,并用1023与1025作邻近检查。

一个常见问题

为什么10位有1024种状态,却写不下数值1024?

10位的每一位有0和1两种选择,共2的10次方,也就是1024种组合。若从0开始解释为整数,编号范围就是0到1023,包含的数仍有1024个。数值1024是接下来的第1025个非负整数,必须增加一位。种类数与最大编号相差1,是这里最值得单独记住的边界。

前导零改变长度,不改变数值

在数学上,0010000000000与10000000000表示同一个非负整数。补在左侧的零只是补足更宽格式的位置;补在右侧则会改变位权,例如100000000000比原数多一个末尾零,数值变成2048。若题目要求固定16位表示,应在1024的11位写法左侧补5个0,不能随意把零添到末尾。记笔记时可在旁边同时标注有效位数与显示宽度,便于区分数值本身和排版要求。