毛程百 6}位移运算 实例说明 通过上个实例的学习,相信读者对位运算已经有了初步了解。 在实例5当中,已经介绍了四个位运算符。本例将重点介绍另外两个位运算符,它们是左 移位运算符(<)和右移位运算符(>)。 寧, 知识要点 左移位操作符(<):用来将一个数的各二进制位全部左移若干位。 标准的左移语句是: variable<左移位数。在左移的过程中,高位左移后滋出,舍弃不 起作用。左移一位相当于操作数乘以2的一次方:左移两位相当于操作数乘以2的平方。 右移位操作符(>>):将一个数的各二进制位全部右移若干位。 标准的右移语句是: variable>右移位数。在右移的过程中,移到右端的低位将被舍弃, 对于无符号数,高位补零。右移一位表示操作数除以2,右移n位相当于操作数除以2的n 次方。 在右移时,需要注意符号位问题。对于无符号数,右移时左边高位移入零。对于有符号数 若原来符号位为零(即该数为正),则左移也是移入零,但如果符号位原来为1(即负数), 则左边移入0还是1,要取决于所用的计算机系统。 程序源码 该应用程序的源代码如下: t include <stdio. h> vcid main() unsigned a,b, c, d ant n: a=64; ∥将操作数a右移(6n)位 >>【6-n); printf("b &d\n", b)i
第一烏基融识蔫 ∥将操作数a左移n位 printf("c= sd\n",c); /对操作数a进行混合位运算 (n-1))|(a<<(n+1)); printf("d 8d\n", d); 程序分析 屏幕的输出结果如下所示 b=4 256 544 程序首先对变量a进行了右移四位的操作,具体的操作可表示为: 0000000c01000000→0000000000000100 所以,得出输出为4 然后,程序又对变量a进行了左移两位的操作,具体的操作可表示为: 0000000001000000→0000000100000000 所以,得出的输出结果为256。 在最后的混合运算中,程序分别对a进行了左移和右移的操作,再将所得的数按位相或, 对应的操作可表示如下: 000000000100000|0000001000000000-0000001003100000 因此,d的最终输出为54
字符译码 实例说明 在C语言中,字符常量的存储形式和整数的存储形式类似,所以字符常量可以像整数一 样在程序中参与相关的运算。本实例中进行的相关运算正是用到了上述的知识点。 这是一个将字符译码的简单程序,译码规律是:用原来字符后面的第六个字符代替原来的 字符。例如,字符a后面的第六个字符是g,则用g代替a。本例题中的原字符串是“ Chinese 知识要点 在这里向读者介绍的是字符数据在内存中的存储形式及其使用方法 将一个字符常量放到一个字符变量中,实际上并非把该字符本身放入到内存单元中去,而 是将该字符相应的ASCI代码放到存储单元中。例如,字符c的ASCI代码为9,字符h的 为 104。 既然在内存中,字符数据是以ASCI代码存储,它的存储形式与整数的存储形式类似 因此,我们说C语言使得字符型数据和整数数据之间可以通用。 个字符数据既可以以字符形式输出,也可以以整数形式输出。以字符形式输出时,需要 先将存储单元中的ASC码转换成相应的字符,然后输出。以整数形式输出时,直接将ASCI 码作为整数输出。程序中对字符数据所进行的算术运算,实际上是对它们的ASCI码进行的 算术运算。 程序源码 该应用程序的源代码如下: t include <stdio. h> vcid main () //定义字符型变量,并给它们付初值 char cl, c2, c3, c4, c5, c6, c7; 14
蔫基磁舢似高 c7='e'; //输出源码 printf("源码是:8cc8c8c8 ccsc\n",c1,c2,c3,c4,c5,c6,c7}; //对字符进行译码运算 2+6 c3=c3+6 c4c4+6; c5=c5+6 6+6 c7c7+6 //输出译码结果 printf(”密码是:8c8ccc8 c&csc\n",c1,c2,c3,c4,c5,c6,c7) 程序分析 由于在本例中,只是实现一些简单的译码工作,应该不难分析出结果。 程序在屏幕的输出结果为: 源码是: Chinese 译码是: Inotkyk 例题中所涉及到字符的ASCⅡ吗,读者可到相关的C语言书籍上去查找。 15
实剑 8}指针操作符 实例说明 指针是C语言中的一个重要概念,也是C语言的一个重要特色。在后面的实例中,我们 将全面、详细地介绍有关指针的内容。本例介绍的只是一些有关指针的基本知识,包括指针相 关操作符&和*的基本概念和一些基本用法,目的是使读者对指针有个初步的了解,这样,在 后面学习指针的过程中,可以很快地进入角色。 知识要点 指针( pointer是变量的内存地址。指针变量( pointer variable)专门存放指向相应类型 的指针。 指针有三个主要功能:帮助快速引用数组的元素:允许C函数修改调用变元的内容;支 持链表和其他动态数据结构。 第一个指针操作符是&。这种一元操作符返回其操作数的内存地址(一元操作符只取一个 操作数)第二个指针操作符是星号(*)。它也是一元操作符,是&的补,返回其操作数所示 地址处的值 放置指针的变量必须恰当声明。声明中,存放内存地址的变量(即指针)必须在名字前冠 以星号(·),由此指明该变量中存放指向变量类型的指针,例如,声明存放指向int类型的指 针变量时书写成:intp 程序源码) 该应用程序的源代码如下: t include <stdio. h> void main() !/定义一个整形指针p int *p; int begin, end; begin //给指针p赋初值