王竞择放下魔灯,拿了5张纸出来。
王竞择“给你们变个魔术吧,但是魔术的一半是科学。”





(作者本人在班级变过这个魔术)
王竞择“看看这5张纸。心里想一个从1~30之间的整数。”
王竞择“告诉我你想的那个数在这5张纸的哪些张出现。”
刘若琳“我先来。在第二、第四张出现。”
王竞择“别的张没有了吗?”
刘若琳(检查了一会,摇头)“没有。”
王竞择(点头)“好。”(在脑袋里算了一下)“你想的那个数是10。”
刘若琳震惊的张大了嘴巴。
——
王强(也很震惊)“我也来。在第一、五张出现。”
王竞择“别的张没有了吗?”
王强(检查了一会,摇头)“没有。”
王竞择(点头)“好。”(在脑袋里算了一下)“你想的那个数是17。”
王强(震惊地拍案而起)“怎么做到的?是什么原理?”
——
王竞择(笑了笑)“这就是二进制的原理。”
王竞择拿红笔圈出来了每张纸的第6个数。





王竞择“当你们告诉我是哪些纸上出现时,我就把那些纸上第六个数相加。比如,如果你们想的是24,它就会在第四、第五张纸上出现,因为24=16+8。”
王强和刘若琳都听得认认真真,好像王竞择讲的是什么高考重点大题一样。就差拿个笔记下来了。
王竞择“24写成二进制就是11000。第四位和第五位的‘1’可以理解为‘有’——2³(8)和2⁴(16)存在,加起来就是24。早期的计算机就利用二进制来表示数——控制一串灯泡的亮或者灭:灯亮就是‘1’,灯灭就是‘0’。比如:一串灯泡:亮亮灭灭亮灭,它就相当于110010,2¹、2⁴、2⁵存在,2+16+32=50,它表示的就是50。”
王竞择“现代计算机也在用二进制:为什么从KB、MB、GB之间的进率是略显奇怪的1024,而不是1000?因为1024就是2¹⁰。”
王竞择“这是——不管是现代的还是早期的——计算机的基础,很有用。我知道高中会学,但是我没上到那前儿。”
(上到那前儿也忘了,作者有病之后就把他的一个月的高中生活忘光了)
(作者:现实生活中是宫安琪告诉我高中会学(二进制)的)
——
刘若琳抬起头来问:
刘若琳“这个魔术背后的原理看上去好简单!我也想变!不过那些关键的(这次你把它们放在了第六位)数都是什么?”
王竞择“2⁰:1、2¹:2、2²:4、2³:8······不过可能会有点难记。可以这么记:2=2(2¹)、2×2=4(2²)、2×2×2=8(2³)······记住1、2、4、8、16、32······要是忘了的话拿计算器乘几次2,乘几次就是2^几。”
王竞择“能管的范围是2^(n+1)-1:如果你用了1、2、4、8,那么范围就是1到16-1=15;1、2、4、8、16、32,那么范围就是1到64-1=63。”
——
王强接着问:
王强“为什么你从2⁰开始,而不是从2¹开始?”
王竞择“2⁰也有份,2⁰=1,就是二进制的最小位。你要习惯计算机都从0开始:0,1,2,3······而不是从1开始(C语言也这样:常常从0开始,比如for循环)。”
——
刘若琳朝王竞择要了纸和笔,开始写起来:
刘若琳“王竞择你看看我理解的对不对。”
(一会儿后)
刘若琳(第一行:3、1、5、7、9、11、13、15)
刘若琳(第二行:3、2、6、7、10、11、14、15)
刘若琳(第三行:5、4、6、7、12、13、14、15)
刘若琳(第四行:9、8、10、11、12、13、15)
刘若琳“王竞择,想一个1~15之间的数,然后告诉我它在哪几行里出现。”
王竞择“第一、第四行。”
刘若琳(1+8=9)
刘若琳“你想的是9,对不对?”
王竞择(笑着说)“看来你已经充分理解了。我看出来,二进制的基础数字是第二个数。打乱一下顺序伪装一下就更好了。”
刘若琳听罢,顿时兴奋地不断轻跳着。