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