学 C 语言一个月,我发现一个挺有意思的事:老师讲课的方式,和你脑子真正能接受的方式,往往是两回事。比如位操作符和逻辑运算符,按位与 &、逻辑与 &&,按位或 |、逻辑或 ||——这些符号长得差不多,规则也差不多,但老师总爱用一些例子一句话来概括:“按位与是有条件中一个假就是假”,“按位或是条件中有一个为真就是真”。
我听完就皱眉,不是听不懂,是记不住。学习是个漫长的过程,如果每个基础知识点都要靠一句完整的话来死记硬背,那我的脑容量迟早要报警。所以我换了个思路:能不能从符号本身的形状出发,直接建立直觉?
一、按位与 &,两条横线,联想成两个“1”。
& 这个符号,两条横线,让我直接联想到汉字“与”。“与”字本身就有两横,两横嘛,自然想到两条竖线——而数字 1 不就是一条竖线吗?所以按位与的规则,我直接记成“1 1 为 1”,两个操作位都是 1,结果才是 1,其他情况全是 0,逻辑与 && 同理,只不过它判断的是整个表达式的真假,但核心逻辑一模一样。
这样记的好处是:看到符号,符号的形状直接触发记忆,不需要在脑子里默念一句口诀。
二、按位或 |,一个“口”,联想成“0”。
“或”这个字,有个类似“口”的包围结构,“口”让我联想到 0,所以按位或的规则,我记成“0 0 为 0”,两个操作位都是 0,结果才是 0,其他情况全是 1,逻辑或 || 也一样。
老师的口诀没有错,但它是描述性的——你需要先理解,再记忆。我的方法则是联想性的——符号的形状直接映射到数字,数字直接映射到运算规则,中间少了一层“翻译”的过程。
一个月下来,我越来越觉得,学编程初期最大的敌人不是难度,而是记忆负担,你每多记一句口诀,脑子就多一分混乱。如果能把知识点压缩成直觉、压缩成图像,那省下来的脑力,就可以留给真正需要思考的地方。
当然,这只是我目前的做法,以后学了更多运算符,这套方法可能还要调整,但至少现在,写 & 和 | 的时候,我再也不用在心里默念“按位与是有条件中一个假就是假”这种长长的句子了——看到符号后,答案自己跳出来。

7499

被折叠的 条评论
为什么被折叠?



