项目2:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。图3.15兔子问题输出结果根据以上的分析可以知道,循环次数可以为0,因此该程序是一个条件型循环,可以利用while语句编写程序。熟悉了循环结构在程序设计中的运用,循环结构语句包含了while语句、do…......
2023-11-18
下面介绍6 种位运算符的运算与应用。在进行位运算之前,需把参加位运算的对象的值转换为二进制数。
1.按位取反运算
按位取反(~)是位运算中唯一的一个单目运算符,运算对象置于运算符的右边,其运算功能是把运算对象的内容按位取反,即每一位上的0 变1、1 变0。例如:
a=00011010, ~a=11100101
2.左移运算
左移运算符(<<)用于将一个数的各个二进制位全部向左平移若干位(左边移出的部分忽略,右边补0)。
若a=15,即二进制数位00001111,执行语句a=a<<2,左移2 位得00111100,即十进制数60。
左移1 位相当于该数乘以2,左移2 位相当于该数乘以4,但此结论只适用于该数左移时被溢出舍弃的高位中不包含1 的情况。例如:
左移比乘法运算快得多,有些编译程序自动将乘以2 的运算用左移1 位来实现,将乘2n的幂运算处理为左移n 位。
3.右移运算
右移运算符(>>)用于将一个数的各个二进制位全部向右平移若干位(右边移出的部分忽略,左边对无符号数补0,有符号数补符号位)。
每右移1 位,相当于除2,右移n 位相当于除2n。例如:
4.按位与运算
按位与运算符(&)将其两边数据对应的二进制位按位进行与运算。与逻辑与运算规则一致,两者都为1 则结果为1,否则为0。例如:
结论:与1 按位与为1,那么该位为1;与1 按位与为0,那么该位为0。所以,与1 按位与可用于检测某个位是1 还是0。
按位与还可进行清零、取指定位、保留指定位等特殊用途。
清零,即使全部二进制位置为0,只要找一个二进制数,其中各个位符合条件:原来的数中为1 的位,新数中相应的位为0,其他位不考虑,然后使二者进行&运算,即可达到清零的目的。
取指定位,即取一个数中的某些指定位。若有一个整数a(2 字节)。想取其中的低字节数,只需将a 与(377)8 按位与即可。若想取两个字节中的高字节,只需a 与(177400)8 按位与 即可。
保留指定位,若想将哪一位保留下来,就与一个数进行&运算,此数在该位取1,其余位为0。
5.按位或运算
按位或运算符(|)将其两边数据对应的二进制位按位进行或运算。与逻辑或运算规则一致,二者只要有1 个为1 则结果为1;否则为0(两者都为0 时为0)。例如:(www.chuimin.cn)
结论:与0 按位或为1,那么该位为1;与0 按位或为0,那么该位位0。就是说任何位与0 按位或还是等于这一位(保持不变)。
按位或运算常用将一个数据的某些位定值为1。例如,a 是一个整数(16 位),有表达式a|0377,则低8 位值全为1,高8 位保持不变。
6.按位异或运算
按位异或运算(^)也称XOR 运算。将其两边数据对应的二级制位按位进行异或运算,若二者相同,结果为0,若二者不同(相异),结果为1。例如:
结论:任何位与1 按位异或,等价于对该位取反。
异或运算符的应用:
(1)使用按位异或运算,可使特定位翻转。例如,假设有数0111 1010,想使其低4 位翻转,即1 变0,0 变1,可以将其与0000 1111 进行异或运算即可。
结果值的低4 位正好是原值低4 位的翻转。要使哪几位翻转就将其进行异或运算的哪几位置为1 即可。
(2)与0 异或,保留原值。
(3)交换两个值,不用临时变量。
假如要将a 和b 的值交换,可以用以下赋值语句来实现。
【例8.1】使用位操作实现将一个十进制整数转换为二进制数输出。程序分析:
设置一个屏蔽字,其中只有一位为1,其余位为0,为1 的位为测试位。将此屏蔽字与被转换数进行按位与运算,根据运算结果判断被测试位是1 还是0。循环测试(一个整数2 个字节,16 位,测试16 次,从最高位开始测试,每次测试后屏蔽字右移1 位以便测试下一位)并输出测试结果就是整数对应的二进制数。
程序代码如下:
程序运行结果如图8.1 所示。
图8.1 进制转换程序运行结果
有关C语言程序设计实用教程的文章
项目2:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。图3.15兔子问题输出结果根据以上的分析可以知道,循环次数可以为0,因此该程序是一个条件型循环,可以利用while语句编写程序。熟悉了循环结构在程序设计中的运用,循环结构语句包含了while语句、do…......
2023-11-18
C语言中逻辑运算符及其含义见表3.2。表3.2逻辑运算符及其含义逻辑运算符“&&”和“||”是双目运算符,具有左结合性;“!”表3.3逻辑运算真值表C语言中进行逻辑表达式求值运算时,不但要注意逻辑运算符本身的运算规则,而且还必须要遵循下面的两条原则:·对逻辑表达式从左到右进行求解。......
2023-11-20
图7.8程序运行结果说明:程序中定义了函数ave,其形参为结构体指针变量ps。boy 被定义为外部结构体数组,在整个源程序中有效。......
2023-10-21
C语言中,提供了用于二进制位操作的运算符以及复合运算符对程序设计中的位运算提供支持,见表11.1。表11.1C语言中的位运算符1.按位与运算符(&)按位与运算符(&)是一个双目运算符,其功能是:将参加操作的两个对象的各个二进制位分别对应进行“与”运算,即:两者都为1时结果为1,否则结果为0。例如,把整型变量a的低16位置1,保留高16位,可以通过对变量a施加a|0xffff运算实现。按位异或运算示例。......
2023-11-20
在C 语言中,具有一定功能、相对独立的程序段称为函数。无论主函数main()位于程序中的什么位置,程序执行时总是从main()开始。C 语言程序的一般结构如图5.1 所示。它具有以下特点:图5.1C 程序中的函数C 语言允许一个程序由多个源文件组成,每个源文件可以独立编译,一个源文件可以被不同的程序使用。一个C 程序有且仅有一个主函数main,主函数可以放在任何一个源文件中,程序总是从主函数开始执行。......
2023-10-21
在C 语言中,对文件的基本操作包括文件的打开与关闭、文件的读和写等。表9.1文件操作方式例如:打开当前目录下的C.DAT 文件,这是一个二进制文件,只允许进行读操作,并使fp 指针指向该文件。应该养成在程序终止前关闭所有文件的习惯,如果不关闭文件将会丢失数据。......
2023-10-21
图4.18程序运行结果设有3 个学生的4 门课成绩,求每个学生4 门课程的总评成绩、3 个学生每门课程的平均成绩。图4.19程序运行结果挑战节目主持人。图4.20程序运行结果联合国排名是以国家名的英文字母排序,社会上也常以姓氏的汉语拼音字母排序。就这样,用字符数组min 依次与新输入的字符串比较,直到输入字符串为空时为止。图4.21程序运行结果......
2023-10-21
运算量只能是整型或字符型的数据,不能为实型数据。“按位与”运算通常用来对某些位清0或保留某些位。“按位或”运算常用来对一个数据的某些位定值为1。~取反运算符的优先级比算术运算符、关系运算符、逻辑运算符和其他位运算符都高。若a=a<<2,则将a的二进制数左移2位。例2.7右移实例。......
2023-11-18
相关推荐