第10章位运算与枚举类型.ppt
《第10章位运算与枚举类型.ppt》由会员分享,可在线阅读,更多相关《第10章位运算与枚举类型.ppt(25页珍藏版)》请在三一文库上搜索。
1、程序设计技术,C语言数据描述和C程序设计初步 结构化程序设计基础和C语言的控制结构 数组及其应用 函数与C程序结构 指针与函数 指针与数组 字符串及其应用 结构体类型和联合体类型 C语言的文件处理及其应用 位运算与枚举类型,位运算与枚举类型,C语言的位运算及其应用 位段及应用 枚举数据类型及其应用,位运算,位运算的概念 二进制位(Bit) 二进制位(Bit)是计算机系统中能够表达的信息最小单位,一个二进制位能够表达出两个信息“0”和“1” 。 字节(byte) 字节(byte)是计算机系统中的基本信息单位,一个字节由8个二进制位组成,其中最右边一位称为“最低有效位”,最左边的一位称为“最高有效
2、位”。 位运算注意点 位运算的数据对象只能是整型类型兼容的数据; 位运算中将参加位操作的数据对象(整型类型)拆开为二进制位看待。,位运算,位运算符 C语言提供了下列11个用于位操作的运算符或复合运算符对程序设计中的位运算提供支持,位运算,按位与运算符(&) 按位与运算符&是一个双目运算符; 功能 将参加操作的两个对象的各个位分别对应进行“与”运算,即:两者都为1时结果为1,否则结果为0; 设有十进制整数:x=128、y=64,则: 00000000000000000000000010000000 (十进制数:128) &) 00000000000000000000000001000000 (十
3、进制数:64) 00000000000000000000000000000000 (十进制数:0) 运算结果:x&y=0。 例10-1 按位与运算示例。,位运算,按位或运算符(|) 按位或运算符|是一个双目运算符; 功能 将参加操作的两个对象的各个位分别对应进行“或”运算,即:两者都为0时结果为0,否则结果为1。 设有十进制整数:x=128、y=64,则: 00000000000000000000000010000000 (十进制数:128) |) 00000000000000000000000001000000 (十进制数:64) 000000000000000000000000110000
4、00 (十进制数:192) 运算结果:x&y=192 例10-2 按位或运算示例。,位运算,按位异或运算符() 按位异或运算符是一个双目运算符; 功能 将参加操作的两个对象的各个位分别对应进行“异或”运算,即:两者值相同时结果为0,否则结果为1。 设有十进制整数:x=128、y=64,则: 00000000000000000000000010000000 (十进制数:128) ) 00000000000000000000000001000000 (十进制数:64) 00000000000000000000000011000000 (十进制数:192) 运算结果:x&y=192 例10-3 按位
5、异或运算示例。,位运算,按位取反运算符() 按位取反运算符是一个单目运算符; 功能 将参加操作的对象的各个位进行“取反”操作,即:0变为1,1变为0。 设有十进制整数:x=128,则: 00000000000000000000000010000000 (十进制数:128) x= 11111111111111111111111101111111 (十进制:4294967167) 运算结果: x= 4294967167 例10-4 按位取反运算示例。,位运算,左移运算符() 左移运算符是一个双目运算符; 功能 将参加操作的左操作对象的全部位向左移动右操作对象指定的位数,左移出去的数位丢失,左移后数
6、的右边补0。 设有十进制整数:x=128、移动位数为2,则: 00000000000000000000000010000000 (十进制数:128) x2 00000000000000000000001000000000 (十进制数:512) 运算结果: x2=512 例10-5 左移运算示例。,位运算,左移运算符() 左移位运算的特点 数据对象进行左移操作时,只要没有出现溢出现象(即移位后的数据仍在取值范围之内),那么某数左移一位相当于将该数乘2; 若在数据对象的左移操作中出现了溢出现象,则数据对象不能正确表示出来; 设有十进制整数:x=128、移动位数为25,则: 000000000000
7、00000000000010000000(十进制:128) x25 100000000000000000000000000000000 (十进制:0, 最前面的1丢失),位运算,右移运算符() 右移运算符是一个双目运算符; 功能 将参加操作的左操作对象的全部位向右移动右操作对象指定的位数,右移出去的数位丢失,右移后左边留下的空位填充取决于左操作对象的数据类型: 对无符号数据(unsigned char和unsigned int),左边补0; 对有符号数据(int和char)左边补其符号位,即正数补0、负数补1。,位运算,右移运算符() 设有十进制整数:x=128、移动位数为2,则: 00000
8、000000000000000000010000000 (十进制数:128) x2 00000000000000000000000000100000 (十进制数:32) 运算结果: x2=32,设有十进制整数:x=-128、移动位数为2,则: 10000000000000000000000010000000 (十进制:-128的原码) 11111111111111111111111101111111 (十进制:-128的反码) 11111111111111111111111110000000 (十进制:-128的补码) x2 11111111111111111111111111100000 (
9、十进制:-32的补码) 10000000000000000000000000011111 (十进制:-32的反码) 10000000000000000000000000100000 (十进制:-32的原码) -0000000000000000000000000100000 (十进制数:-32) 运算结果:x2= -32 例10-6 右移运算示例。,位运算,位运算应用举例 例10-7 编程序实现将一个无符号整型数据二进制代码中811位取出的功能。 问题分析: 对处理的数据num通过num = 8将其本身的07位移出,移位后num中原来的811位成为移位后数据的低4位; 通过mask=(0 4)表
10、达式构造一个除低4位为1,其余位都为0的整型数据mask; 通过表达式num&mask得到一个低4位保留了num低4位值(即num最初的811位值)的整型数据并输出。,位运算,位运算应用举例 例10-8 利用二进制位运算进行十进制整数到二进制数的转换。 问题分析: 从原理上说,十进制整数到二进制数的转换应该使用“除2取余法”。从前面的介绍得知,对整型数据而言在系统存储器中存储的是其二进制补码形式。如果被转换的十进制数是正数,则其补码与其原码相同,转换时只需要判断出最高位(符号位)以外的所有二进制位,二进制位值为1时输出1,二进制位值为0时输出0即可得到转换后的二进制数据。 如果被转换的十进制数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 运算 枚举 类型
链接地址:https://www.31doc.com/p-3418036.html