最开始学计算机基础的时候,最绕人的就是二进制如何转换成十进制,网上一堆复杂的口诀,看得人头昏脑涨,实操的时候还是频频出错。那时候总觉得这个转换肯定有啥高深公式,死记硬背了一堆规律,结果一碰到带零的二进制数就算错,白白浪费了好多刷题的时间。
一开始踩的最蠢的坑,就是以为二进制数从左往右算权重。随便拿到一个二进制数字101,直接从第一位开始乘,瞎算一通,最后得出的十进制数字完全不对。每次算完对照答案都对不上,反复核对步骤,都找不到问题在哪,只觉得自己完全摸不透这个转换逻辑,越算越烦躁。
完全是死磕错题的时候才发现问题所在。二进制转十进制的权重,根本不是从左递增,而是从右往左,从2的0次方开始依次叠加。这是最核心的一步,也是绝大多数新手第一个栽跟头的地方。
不用记复杂理论,就拿最常用的四位二进制数举例,实操方法特别直白。先把二进制数字从最右侧开始数位数,每一位数字对应的权重,就是2的对应次方,最右边第一位是2⁰,第二位是2¹,依次往左递增,最后把每一位数字和对应权重的乘积全部相加,得到的总和就是对应的十进制数。
就用101这个简单数实操一遍,就能彻底吃透。把数字拆分,从右至左三位数字分别是1、0、1。最右侧第一位的1,对应权重是2的0次方,结果就是1×1=1。中间的0,对应权重是2的1次方,0乘以任何数都是0,这一位可以直接忽略。最左侧的1,对应权重是2的2次方,算出来是1×4=4。最后把所有有效结果相加,4+1=5,这就是101对应的十进制数值。
很多人都会忽略数位为0的位置,我之前就是这样。总下意识跳过0的位置,直接累加非零数位的权重,偶尔能算对,碰到不规则的二进制数就彻底乱套。其实不用刻意跳过,0的数位算出来本身就是零,加不加都不影响结果,老老实实逐位计算,反而不会出错,更适合新手实操。
后来刷题遇到八位二进制数,比如11001011,一开始心里发怵,觉得位数太多容易算混。试着用同样的方法逐位拆解,从最右侧第一位开始,依次对应2⁰到2⁷的权重,每一位单独相乘,最后全部求和,步骤虽然多,但全程没有出错。慢慢就发现,这个方法没有例外情况,不管是几位二进制数,整数位数多少,都能通用。
根本不用背口诀、不用记特殊规则,全程就一个动作,逐位对应权重相乘、累加。没有任何花哨的技巧,却是最稳、最不会出错的实操办法。
那天晚自习刷完一整页二进制转换习题,合上练习册的时候,桌面上的草稿纸密密麻麻写满了数位拆解的计算过程。盯着纸上整齐的数字,突然觉得之前的纠结都很没必要,原来所有复杂的转换,拆解开来都是最简单的乘法和加法。