满分通过ACSL第一轮-计算机数字系统

背景

嘟嘟(儿子小名)妈突然有一天告诉我们,没跟我们商量就给儿子报名了ACSL的比赛,当然完全不知道是什么类型的比赛,只是告诉我们这个含金量很高,如果能拿奖对宝宝以后的发展会很好,主要我觉得宝妈是看到了孩子对编程的兴趣,所以就悄悄的给报名了。由于我是程序员,所以这个重担就落到了我头上,我得先自己学会,然后再把儿子教会。用我儿子的话说是我先嚼烂再喂给他。

关于ACSL

美国计算机科*联学**赛 (American Computer Science League)起源于美国硅谷,拥有40多年的历史,是美国历史悠久的中小学生计算机编程赛事之一。该比赛同时获得了美国国家中学校长联盟NASSP 与美国计算机科学教师协会的官方认证和推荐,同时获得了如谷歌、Adobe、No Starch Press、O'Reilly Media、Pearson、Pragmatic Bookshelf、and Wolfram 等著名高科技和教育企业的支持。随着各国日益重视编程教育,每年来自美国、加拿大、欧洲、非洲和亚洲的众多中小学生都踊跃参加到该竞赛中。

满分通过科目二,满分通过驾考

ACSL分级知识点

给嘟嘟报名的是初级,需要进行计算机数字系统、算式表达式、布尔代数、图论四轮比赛,第一轮为淘汰赛,选前65%进入2-4轮。

计算机数字系统学习

计算机数字系统说直白点就是进制的转换和计算,首先大家来感受下题目:

满分通过科目二,满分通过驾考

2018-2019年第一轮真题

总体来看,这个题目并不难,但是需要跟小学生讲明白,并且让他们掌握这个运算就比较头痛了。不过我有个优势是我们生活在一起,可以一直在他耳边唠叨,慢慢渗透。总共我拆分成了10个知识点,慢慢讲解。

  • 理论导入:大概讲明白为啥有二进制,为啥需要转换。计算机是很厉害的,但是也是很笨的。厉害是能完成各种复杂的事项,笨就是其实只认识0和1。为什么这么设计了呢?就是因为技术上也比较好实现,用双稳态电路类似开关表示二进制数字0和1是很容易的事情,计算的逻辑非常的简单。十进制是对人类比较友好的,所以计算机在展示的时候会进行转换。
  • 了解二进制、八进制、十六进制:0和1其实就是二进制,就是到2的时候进位,八进制就是到8的时候进位,十六进制是到16的时候进位(特别说明下十六进制有点特殊,一般用数字0到9和字母A到F表示,其中:A~F相当于十进制的10~15,这些称作十六进制数字),都可以类似十进制来理解。八进制和十六进制都是源于二进制,是由于二进制表示实在是太长了,所以人们发明了可以转换的八进制和十六进制,一位八进制可以映射为3位二进制(位宽: 也就是3位),一位十六进制可以映射4 位二进制 (位宽: 也就是4位) 。为啥没有四进制呢? 简单来说就是相对二进制长度仅仅减半,意义不大。
  • 数数练习(重点) :和我们学习十进制一样,可以用二进制从0数到15来练习,0-01-10-11-100-101-110-111-1000-1001-1010-1011-1100-1101-1110-1111,另需记住十六进制下A=1010,B=1011,C=1100,D=1101,E=1110,F=1111。
  • 进制运算:不管任何进制的运算都可以类比十进制的运算,这样比较好理解。比如7+7 = 14(十进制),7+7=16(八进制)因为进位减8得6。十六进制的计算也一样,需要牢记A-F代表的数字,比如 ,其中4+6=10=A,F+4=19(进位减16得3),A+2+1(进位)=D,2+0=2 。需要注意进位即是减去相应的进制数字,十进制进位是减10,八进制是减8,十六进制减16。
  • 八进制和十六进制互相转换:记住万能的公式,先转换为二进制,根据位宽切割再转换目标进制。先看一道2018-2019年第一轮真题中的第一道 转八进制,根据公式我们首先要转为二进制,十六进制的位宽是4位,如果不足位宽需要使用前面补0,转换为二级制是0010 0000 0001 1000,由于八进制的位宽是3位,所以我们重新切割为(最前面的0可以忽略)10 000 000 011 000,然后分段计算出来数值就是八进制了,结果是 。所以需要掌握好0-15的二进制表示,根据位宽切割转换。
  • 十进制转二进制:这是相对难的知识点,需要用到短除法来转换为二进制。什么短除法就是采用"除2取余,逆序排列"法,假设29转换二进制如下图:

满分通过科目二,满分通过驾考

短除法

  • 转十进制:任何进制转十进制的算法是一样的,就是从右到左用每个数去乘以对应进制的相应次方,比如二进制110转换成十进制是 ,如果是八进制的110转换成十进制是 ,如果是十六进制的110转换成十进制是 。这个考察的就是计算能力了。
  • 颜色表示法:十六进制的RGB(R代表Red(红色),G代表Green(绿色),B代表Blue(蓝色))。比如2018-2019年第一轮真题中的第五道 ,前2位是R,中间2位是G,后两位是B,那么题干要求蓝色分量的十进制是多少,其实就是对3D转换为十进制即可。

考试过程

我们总共有两套历史真题,2018-2019的这套用来学习讲解,2019-2020的这套用来测试,检查是否全部掌握。

考试的前一天我们进行了模拟考试,可以熟悉题型。通过模拟考才知道是选择题,并不是填空题。而且总体感觉模拟考比正式的要难一些。

考试完成之后我通过儿子的草稿纸判断出应该是满分,虽然有一道计算有点问题,但是不影响正确答案。结果出来后确实是满分5分,顺利的通过了筛选进入了2-4轮的比赛。接下来就需要准备前缀/中缀/后缀表示法,这个我简单了看下,还涉及到了分数的计算,难度又上又上了一个台阶。

最后展示下嘟嘟考试的草稿纸。

满分通过科目二,满分通过驾考

考试草稿1

满分通过科目二,满分通过驾考

考试草稿2

满分通过科目二,满分通过驾考

考试草稿3