上周末,给孩子辅(fu)导奥数的时候,发(fa)现居然有一道二进(jin)制题,题目是求(qiu)两个二进制的和。我(wo)的视频课第一课中就介绍了二进制的特(te)点“逢二进一,借一当二(er)”,给孩子讲了下,他还是顺利(li)的做了出来。然后,我又给孩子讲了下十进制与二进制的(de)转换。在讲十进制与二进制(zhi)转换的时候,我(wo)是按照咱们以前学的除二(er)取余法,如下图所示:
100这种算法(fa)应该说是教科书的(de)算法,去各大搜索引擎搜出(chu)来的算法都是这个。
我大概比别人多思考了一步,我在想为什么要除2取余,经过思考我发现(xian)其实质是要找出(chu)这个数里面含有多少个2,例如例图中的150,它的里面就含有75个2,而2的二(er)进制为10,也就是说要算出75个(10)?的和。继续思考,你会发现(xian),(10)?+(10)?=(100)?=22 , (100)?+(100)?=(1000)?=23,于是我得出了如下图所示(shi)结果:
com从上图(tu)中可以总结出一个规律:那就是2的(de)指数是几,换算成二级制后面就有(you)几个0,比如:2?=100000000。这个也好理解,我的视频课程讲ASCII码时,说ASCII码只占用了7位存储(chu),最高位为0,所以最(zui)多可以存储128个字符,存储范围从(cong)00000000到01111111,也就是10进制(zhi)的0-127。下图就是我的最(zui)新算法:
大家可以(yi)对比一下,看看是否简化了原(yuan)先的除2取余算法。如果(guo)你觉得本文还不错,请帮忙转发给(gei)需要的朋友。