第12章 位运算
《第12章 位运算》由会员分享,可在线阅读,更多相关《第12章 位运算(5页珍藏版)》请在装配图网上搜索。
1、C语言程序设计本章重点: 位运算符和位运算 位段的概念第12章 位运算12.1 位运算符和位运算位运算:以二进制位为单位的运算。位运算仅限于整数(整型数和字符型)一、与位运算符(&)1. 运算规则运算的两个二进制位值都为1,结果才为12. 举例3&5=118&35=?23&1=?二、或位运算符(|)1. 运算规则运算的两个二进制位值有一个为1,结果就为12. 举例3|5=?18|35=?两个数组或运算的意义延伸三、异或位运算符()1. 运算规则运算的两个二进制位值不同,结果为1,否则结果为02. 举例A=3A=A5=? A=A5=?两个数组异或运算的意义延伸四、取反位运算符()1. 运算规则若
2、运算的位值为1,结果为0,值为0,则结果为1。2. 举例3=?取反位运算符的运算优先级高于其它位运算符取反在图形学上的含义五、左移位运算符()1. 运算规则整体左移,右补0,左移出的高位丢弃左移1位,相当于乘2(高位未移出时)左移n位,相当于乘2的n方(高位未移出时)2. 举例11; 121)1. 运算规则整体右移,左补0/1,右移出的低位丢弃右移1位,相当于除2(低位未移出时)右移n位,相当于除2的n方(低位未移出时)2. 举例121 122655七、赋值位运算符1. 运算符&=, |=, =, =, =2. 举例a&=3八、位运算举例例 输入一个正整数,然后输出它对应的二进制数。/*方法一
3、*/main()int x, t, i;clrscr();printf(please input x:);scanf(%d, &x);for (i=0; i16; i+ )t=x%2;gotoxy(16-i,3);printf(%d,t);x=x/2;getch();/*方法二*/#include conio.hmain()int x, i, t;clrscr();printf(please input x:);scanf(%d, &x);for (i=0; ii; /除2t=t&1; /取余gotoxy(16-i,4);printf(%d,t);/* t=x(15-i);t=t&1;prin
4、tf(%d,t);*/getch();/*方法三*/#include conio.h#include math.hmain()int x, i, t, n;clrscr();printf(please input x:);scanf(%d, &x);for (i=0; ii;gotoxy(16-i,4);printf(%d,t);/* n=pow(2,15-I);t=x&n;t=t(15-I);printf(“%d”,t);*/getch();12.2 位段位段:在一个结构体中可以以位为单位来指定其成员所占内存长度,这种以位为单位的成员称为位段(或位域)。 一、位段的定义如:struct pa
5、cked_data unsigned a : 2;unsigned b : 3;unsigned c : 4;int i;存储单元分配:共4个字节 716432a b c i data; 二、位段的引用1. 引用形式data.a=2;data.b=7;data.c=9; 位段允许的最大值范围,data.a=4是错的2. 说明 位段成员的类型必须指定为unsigned int类型。 允许在位段中定义无名字段,其含义为跳过该字节剩余的位或指定的位不用。当无名字长度为0时,跳过该字节剩余的位不用;当无名字段长度为n时,跳过n位不用。 位段的长度不能大于存储单元的长度。即16位 不能定义位段数组。 位段可以在数值表达式中引用,也可以用整型格式输出。 如:struct packed_data unsigned a : 2;unsigned b : 3;unsigned : 0;unsigned c : 4;int i; data; abci233448又如:struct packed_data unsigned a : 2;unsigned b : 3unsigned : 2;unsigned c : 4;int i; data; abci232458第12章 第5页
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。