yjs第12章位运算

上传人:仙*** 文档编号:243925560 上传时间:2024-10-01 格式:PPT 页数:18 大小:89.50KB
返回 下载 相关 举报
yjs第12章位运算_第1页
第1页 / 共18页
yjs第12章位运算_第2页
第2页 / 共18页
yjs第12章位运算_第3页
第3页 / 共18页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,12.1 位运算,C,语言具有位逻辑运算和移位运算的独特功能,参与位运算的运算量必须是整数。位逻辑运算包括&、|、四种运算,移位运算有两种运算。其中位单目运算符。,12.1.1,按位与,12.1.2,按位或,12.1.3,按位异或,12.1.4,按位取反,12.1.5,按位左移,12.1.6,按位右移,12.1.7,位运算的复合赋值运算符,12.1.1 按位与,参与运算的量,如果相对应的两位都为1,则该位的结果值为1,否则为0,即:,0&0=0 0&1=0 1&0=0 1&1=1,如:,a,的值为0,x1234,b,的值为0,x00,a&b,运算的结果,c,应为:,a 0001 0010 0011 0100,&b 0000 0000 1111 1111,c 0000 0000 0011 0100,按位与常用于将某个运算量的某些位清0或提取某些位的值,如本例中,将变量的高8位清0,同时保留或提取低8位的值,可用一个高8位为0,低8位为1的值0,x00ff,和它进行按位与。,12.1.2 按位或,参与运算的量,如果相对应的两位都为0,则该位的结果值为0,否则为1,即:,0|0=0 0|1=1 1|0=1 1|1=1,如:,a,的值为0,x1234,b,的值为0,x00,a|b,运算的结果,c,应为:,a 0001 0010 0011 0100,|b 0000 0000 1111 1111,c 0001 0010 1111 1111,按位或常用于将某个运算量的某些位置1,如本例中将变量的低8位置1,高8位不变,可用一个高8位为0,低8位为1的值0,x00ff,和它进行按位或。,12.1.3 按位异或,参与运算的量,如果相对应的两位相异,则该位的结果为1,否则为0,即:,00=0 01=1 10=1 11=0,如:,a,的值为0,x1234,b,的值为0,x00,a,b,运算的结果,c,应为:,a 0001 0010 0011 0100,b 0000 0000 1111 1111,c 0001 0010 1100 1011,按位异或有“与1异或”该位翻转,“与0异或”该位不变的规律。如本例中用0,x00ff,进行按位异或,使变量,a,的低8位翻转,高8位不变。,12.1.4 按位取反,将参与运算量的相对应位的值取反,即1变0,0变1。,如:,a,的值为0,x1234,a,运算的结果,c,应为:,a 0001 0010 0011 0100,c 1110 1101 1100 1011,12.1.5 按位左移,按位左移是将一个运算量的各位依次左移若干位,低位补0,高位舍弃不要。,假设机器字长为8位,变量,a,的值为16,将,a,左移二位,即,a=a2:,右移前 0000 1111,右移后 0000 0011,如果,a,是带符号的负数,,a=-16,,存放在机器中的补码为1111 0000,则,a=a2,,值为-4。,右移前 1111 0000,右移后 1111 1100,表3.3 位运算符的运算规则,运算符,名称,运算规则,&,位与,两个相应位全1为1,其余为0,|,位或,两个相应位全0为0,其余为1,位异或,两个相应位相同为0,其余为1,取反,把操作数各位0变1,1变0,右移,把操作数右移指定的位数,12.1.7 位运算的复合赋值运算符,共有五种位运算的复合赋值运算符:&=(位与赋值)、|=(位或赋值)、=(位异或赋值)、=(按位右移赋值)、=3,相当于,a=a3,12.2 位运算举例,见例12.1 12.2,12.2 位段的概念,所谓,位段,,相当于结构体类型中的成员,但是定义位段的长度是以位为单位。它是一种特殊的结构体类型。,(1)位段的定义,定义位段的一般形式为:,struct,结构体类型标识符,unsigned,位段名1:长度1;,unsigned,位段名2:长度2;,.,unsigned,位段名,n:,长度,n;,变量名表;,(,2)说明:,在,定义中,每个位段(相当于成员)的长度是以位为单位,因此位段的类型为,unsigned,。,2.一个位段必须存储在同一存储单元,不能跨两个单元。即一个位段的长度不能大于一个单元存放。,3.当某个位段开始存放时,若相应的存储单元空间不够,则剩余空间不用,该位段将在下一个单元存放。,例如,设某个系统存储单元长度为8(一个字节),且有如下的定义:,struct,unsigned a:4;,unsigned b:2;,unsigned c:6;,x;,a,b,c,4.可以定义无名位段。,例如:,struct,unsigned a:4;,unsigned :3;,unsigned b:2;,unsigned c:6;,x;,此,位段无名,该3位闲置不用。,5.可以用长度为0的无名位段,使下一个位段从另一个存储单元开始存放。,struct,unsigned,aa,:4;,unsigned :3;,unsigned bb:2;,unsigned :0;,unsigned cc:6;,y;,6.注意,不能定义位段数组。,(,3)位段的引用:,可以用赋值语句赋值,例:,x.a=4;y.cc=6;,可以在表达式中引用,C,语言将自动将其转换,为,int,类型,例:,x.a+;y.cc=y.,aa,+1;,可以用整型格式输出,例:,printf,(“a=%d b=%d c=%d”,x.a,x.b,x.c);,变量名.位段名,第12章结束,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!