前言
实验室学长毕业临走前,推荐了《深入理解计算机系统》CSAPP,大部头。第1章《计算机系统漫游》,去年寒假前翻了一遍。后面由于实验室的事就一直放在那里。前一段时间,继续从第2章看起《信息的表示和处理》。内容还是比较晦涩,硬着头皮翻了一遍。
作为软件工程专业的学生,大二时学过《计算机组成与结构》。课本用的是自己老师编的书,第2章也是数据的表示和运算。当时把那些进制表示、原码、补码、加减法等基本都挺熟的,一来时间过了4年了,二来当时还是学的比较简单。
《深入理解计算机系统》书中的讲解,显示出作者强大的数理逻辑背景,信手拈来。而看起来如果没有一点基础,真是挺难的。上网看了下大家的评论,都反映没有一定基础看不进去。这本书有一个好,每小节都带有练习题,而这些练习题都非常有趣。于是我就三分看书,七分看题。
现摘录若干道比较有意思的题目,做个笔记,也是分享。
布尔代数简介 & C语言中的位级运算
练习题2.10
对于任一位向量a,有a^a=0(异或)。应用这一属性,考虑下面程序:
void inplace_swap(int *x,int *y){
*y = *x ^ *y;
*y = *x ^ *y;
*y = *x ^ *y;
}
这个过程是交换指针变量x、y所指向的存储位置处存放的值。这与通常的