吴俊敏教授讲解计算机系统:程序设计基础与二进制补码

需积分: 0 1 下载量 199 浏览量 更新于2024-07-21 收藏 481KB PPT 举报
"这份资料是中国科学技术大学吴俊敏教授的《程序设计与计算机系统》课程的中文版PPT,涵盖了计算机系统的基本概念、数值编码、编程影响、基本操作以及C语言的趣味习题等内容。" 在这一部分的学习中,我们首先了解到计算机系统的基础,包括程序员视角下的计算机系统详解。课程提到了数值编码的不同方式,如无符号数和二进制补码,它们是计算机存储和处理数字的基础。无符号数直接用二进制表示,而二进制补码则用于表示有符号整数,其中最高位作为符号位,0代表正数,1代表负数。 编程时,这些数值编码规则对C语言中的类型提升(C promotion rules)有直接影响。例如,当不同大小的整数类型进行运算时,较小的类型会被提升到较大的类型。此外,基本的算术操作如加法、减法和乘法在计算机内部执行时要考虑溢出的情况,这可能导致意外的结果。使用移位操作可以高效地完成2的幂次乘除,但同样需要考虑溢出问题。 课程中还涉及了一些C语言的趣味习题,用于加深对整数编码和运算规则的理解。例如,对于表达式`x<0`和`((x*2)<0)`,我们需要分析所有可能的参数值,证明它们之间的关系是否恒成立,或者找出反例来说明它们不总是等价的。类似的习题还包括对整数类型的转换和比较,如`x>y && -x<-y`,这些习题帮助学生理解整数的表示和运算在不同场景下的行为。 此外,课程还介绍了如何初始化和使用不同类型的变量,如`int x=foo(); int y=bar(); unsigned ux=x; unsigned uy=y;`这里展示了如何将`int`类型的变量转换为`unsigned`类型,以及如何通过函数`foo()`和`bar()`来赋值。 这个PPT内容深入浅出地讲解了计算机系统中数值表示的基本原理,以及这些原理如何影响程序设计,特别是C语言的实践应用。通过学习,我们可以更好地理解和预测程序在计算机系统中的行为,从而编写出更加健壮和高效的代码。