C语言位运算示例:移位操作

需积分: 22 2 下载量 13 浏览量 更新于2024-08-19 收藏 4.07MB PPT 举报
"C语言中的移位位运算及文件操作基础知识" C语言中的移位位运算是一种高效的操作,它允许我们快速地将一个整数的二进制表示向左或向右移动一定的位数。在标题和描述中提到的例2.15是一个关于移位位运算的例子。在这个例子中,定义了两个宏S1和S2,分别等于1和3,然后在主函数main()中,程序读取用户输入的整数a,并进行了四种不同的移位操作。 1. 右移位运算(>>):`a>>S1` 和 `a>>S2`。右移一位相当于除以2,丢弃最低位(对于无符号整数,最高位填充0;对于有符号整数,根据原来的符号位填充0或1,这里是32位系统默认行为)。例如,当a等于3(二进制11),`3>>1` 结果是1(二进制1),因为最右边的一位被移出;而`3>>3` 结果是0(二进制000),因为所有位都被移出。 2. 左移位运算(<<):`a<<S1` 和 `a<<S2`。左移一位相当于乘以2,原有高位用0填充。对于正数a=3(二进制11),`3<<1` 结果是6(二进制110),因为3的二进制形式向左移动了一位,右侧补0;`3<<2` 结果是24(二进制11000),同样向左移动两位,右侧补0。 在文件操作方面,C语言提供了标准库函数`fopen()`来打开文件。这个函数用于建立文件指针,以便后续的读写操作。在标签中提到的"C语言",这部分内容介绍了如何使用`fopen()`函数。 1. 当文件在当前目录下,使用如`fp=fopen("aa.txt","r");`的语句,"aa.txt"是文件名,"r"表示以只读方式打开。 2. 如果文件不在当前目录下,需要提供完整的路径,如`fp=fopen("d:\\fengyi\\bkc\\aa.txt","r");`,这表示在指定的路径下打开文件。 3. 若要从键盘接收带有路径的文件名,可以先声明一个字符数组,如`char infile[30];`,然后使用`scanf()`函数读取,如`scanf("%s", infile);`,最后用`fopen()`打开文件,将读取的路径作为参数传递。 在进行文件操作时,要注意数据的转换。输入时,ASCII码字符会转换为二进制数据;输出时,二进制数据则会转换回ASCII码字符。例如,如果要读取或写入文本文件,`fread()`和`fwrite()`函数用于二进制数据,而`fgets()`和`fprintf()`则适用于处理文本数据。 这段内容涵盖了C语言中的位运算以及文件操作的基础知识,包括移位运算符的使用和文件的打开方式,以及数据在内存与磁盘之间转换的原理。理解这些概念对于编写涉及位操作和文件处理的C程序至关重要。