po主是在读大学生一枚,最近在学校中上ics课(introduction to computer science)并做配套的10个lab。特在此将lab内容以及我的思考解答过程与各位大神分享,希望能给真正想了解此课及这些实验之人一些帮助。若我的所言有不当之处,也请各位多多加以指正,也算是带一带我这个新人,我将感激不尽。
废话不多说,直入正题。
datalab 是初读此课的新手将要面临的第一个lab(po主当初花了很久才适应啊!),相对来说比较简单,主要是关于bits-level运算的一些题目。说实话,这个lab与整门课的方向比较脱节,很多bits-level的实现也确实更像智力测试题,不过既然有,便要攻克之。在做完之后,也确实对底层bits-level运算实现的理解有颇多加深。
Q1:(蓝色部分是lab要求,其中包括对要求实现的函数的解释、举例、可以用的bits-level操作、最多操作数以及分值,下面是我的函数实现)
很经典的bits-level实现绝对值运算,这也是我认为整个lab中唯一对以后实际应用(包括面试)有价值的运算。不用if操作的绝对值运算可以有效加快运算速度。
第一步取符号位,(正为0,负为111……1),第二步抑或操作对于正数相当于不变,对于负数相当于取反加一(即得相反数),从而完成了统一的取绝对值。
************************************************************************************************************************************************************************
Q2:
狄摩根定律,不解释。
************************************************************************************************************************************************************************
Q3: