第(2/3)页 “你当内存是你家大白菜,论吨批发的?” 小戴眼镜滑到鼻尖,忘了扶。 林希站起身,拿起粉笔。 “一个字节几个比特?” 小戴立刻回答: “8个。” “既然只有1和0两种状态。” 林希在黑板上写下: 0 0 0 0 0 0 0 0 “一个字节,8个比特,天然就是8个开关。” “开,就是有。” “关,就是无。” “为什么要用完整整型记一个格子?” 他用力写下几个符号: << >> & “位运算。” “左移,右移,按位与。” “一个字节管8个格子。” “10列棋盘,两个字节就够。” “20行,一共40个字节。” 他转头看小戴: “400字节变40字节。” “省出来的空间,够你玩到第一百层。” 小戴盯着黑板上那八个0。 旁边有人下意识掰着手指数,数到第八下,手停在半空。 一个字节,当八个格子用? 还能这么玩? 林希已经坐回键盘前。 几行极简的汇编指令跳出来。 位移。 按位与。 清除一行时,数据整体下移。 没有花里胡哨的结构。 没有臃肿的循环。 干净得像一把剔骨刀。 重新编译。 运行。 简陋的方块开始落下、堆积、消行。 第五层。 第十层。 第十五层。 画面依旧流畅。 内存占用暴降八倍,纹丝不动。 小戴盯着屏幕右下角的数字,半天才挤出一句: “……这也行?” 研发室里只剩外面的风雪声。 如果说“碰撞箱”是换一条路绕过大山。 那“位运算”就是把一块铜板劈成八瓣花,还嫌不够省。 直播间弹幕飞过: 【给八十年代大学生一点小小的位运算震撼!】 【逼急了,老派程序员能把代码掰碎塞进寄存器里。】 【主播这是在给第一代程序员布道啊!】 【2K内存:求求了,终于有人把我当人看了。】 林希拍掉手上的粉笔灰。 “今天这两招,刻在脑子里。” “以后写代码,先看手里有多大的碗,再决定下多少米。” 这一次,没人再拍桌子。 第(2/3)页