C语言程序设计-提高篇-第4章位运算.ppt
《C语言程序设计-提高篇-第4章位运算.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计-提高篇-第4章位运算.ppt(39页珍藏版)》请在三一文库上搜索。
1、C语言程序设计 提高篇,第4章 位运算,内容概述,位运算操作 位段的概念,教学目标,字节和位的有关概念; 正确使用常见的位运算符和位运算操作; 牢记位段的要领及位段的使用方法。,C语言既是一种高级语言,广泛应用于应用软件的开发和程序设计,同时又是一种低级语言,可以用于系统软件的开发和程序设计,如自动控制系统中的过程控制、参数检测、数据通讯等控制程序,都可以综合利用C语言中的指针操作、位运算和位段技术来实现。 本章介绍位运算的基本形式和常用运算符,并简要介绍位段的概念。位运算的深入学习,应该在计算机原理和汇编语言程序设计课程中进行。,位运算概述 所谓“位运算”,是指按二进制位进行运算。 位运算的
2、特点:运算按二进制逐位进行没有借位和进位。 位运算量:整型(int,short,unsiged,long)/字符型(以补码/ASCII码形式存储),不可为实型。,4.1位运算符和位运算,位运算符 (Bitwise Operators),位运算符还可与赋值运算符相结合,进行位运算赋值操作。如: a&=b 等价于 a=a&b a=b 等价于 a=ab 位运算时的数据类型为char/int,分析时要化为二进制形式,但在程序中书写及输出结果时仍为char/int。 负数以补码形式参与运算 注意与逻辑运算区别,按位与 (Bitwise AND),运算规则 0 用法 按位清零 保留某些指定位,位运算符的使
3、用,例1 #include void main( ) int a,b; printf(“Enter a and b:“); scanf(“%d,%d“, ,计算 010 000 (a) & 011 111 (b) 010 000 001 010 (a) & 010 000 (b) 000 000,Enter a and b: 16,31 a&b=16,Enter a and b: 10,16 a&b=0,按位或 (Bitwise Inclusive OR),运算规则 0 | 0 = 0; 0 | 1 = 1; 1 | 0 = 1; 1 | 1 = 1; 用法 按位定值为1,例2 #includ
4、e void main( ) unsigned char a,b; printf(“Enter a and b:“); scanf(“%o,%o“, ,Enter a and b: 20,30 a | b=30,Enter a and b: 12,20 a | b=32,计算 010 000 (a) | 011 000 (b) 011 000 001 010 (a) | 010 000 (b) 011 010,按位异或 (Bitwise Exclusive OR, XOR),运算规则 0 0 = 0; 0 1 = 1; 1 0 = 1; 1 1 = 0; 说明 相“异”则为1,相“同”则为0,
5、例3以下程序的功能是将a数据的低4位取反。 #include void main() unsigned char a=0x39, b= ; a=ab; printf(“%xn“, a); ,答案:0x0f,计算 00111001 (a) 00001111 (b) 00110110,与0相异或,保持原值不变 与自身相异或,则全部位清零 交换两个整数值 a=ab; b=ba; a=ab;,交换两个整数值不用临时变量,#include void main() int a=3, b=4 ; a=ab; b=ba; a=ab; printf(“a=%d b=%dn“, a,b); 结果:a=4 b=3,
6、按位取反 (Ones Complement),运算规则 0 = 1; 1 = 0; 用法 所有位翻转 获得适用于不同系统的位运算模板,例4 #include void main() int a=32767; int b=a; printf(“a=%d,b=%dn“,a,b); ,结果:a=32767,b=-32768,计算 a: 原码: 0111111111111111 b: 补码: 1000000000000000,左移 (Left Shift),运算规则 i n 把i各位全部向左移动n位 最左端的n位被移出丢弃 最右端的n位用0补齐 用法 若没有溢出,则左移n位相当于乘上2n 运算速度比真
7、正的乘法和幂运算快得多,例5以下程序的运行结果是 60 。 #include void main() unsigned int a=15,b; b=a2; printf(“%d,%dn“,a,b); ,例6以下程序的运行结果是 。 #include void main() int a=12,b; b=0x1f5 ,结果:12,96,计算 已知:0x1f5为1 1111 0101 且:a为1100 a3为1100000 111110101 & 001100000 001100000 = 96,右移 (Right Shift),运算规则 i n 把i各位全部向右移动n位 最右端的n位被移出丢弃 最
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 提高 运算
链接地址:https://www.31doc.com/p-3479479.html