如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第12章位运算12.1二进制位运算概述12.2位的运算符运算符1.位逻辑运算符位逻辑运算符的应用:例如:unsigneda=3;a<<2的十进制值是:a>>1的十进制值是:总结位运算符:(1)位运算符中按位取反运算符的优先级最高,它比算术运算符,关系运算符,逻辑运算符和其他位运算符都高。(2)位运算符与赋值运算符相结合可以组成复合的赋值运算符。例如:&=<<=>>=^=(3)如果两个类型长度不同的数进行位运算,则需要进行补位。如a&b,b为int型,a为long型。系统将二者右端对齐并对较短的数b进行左补位,如果b为正数,则左侧16位补满0,如b为负数,左端应补满1;如果b为无符号整型数,则左侧补满0。例:设计一个函数,给出一个数的原码,得到该数的补码。#include<stdio.h>main(){inta,get(int);printf("输入一个十六进制数:\n");scanf("%x",&a);printf("\t它的补码是:%x\n",get(a));}get(intvalue)/*求一个数的补码*/{intz;z=value&0x8000;if(z==0)z=value;/*符号位为0,为正数*/else/*符号位为1,为负数*/{z=~value+1;z=z+0x80000;}/*恢复符号位*/returnz;}三、位运算符的优先级(添加)12.3位段位段的引用:⑵允许在位段中定义无名字段,其含义为跳过该字节剩余的位或指定的位不用。当无名字长度为0时,跳过该字节剩余的位不用;当无名字段长度为n时,跳过n位不用。又如:structpacked_data{unsigneda:2;unsignedb:3;unsigned:2;unsignedc:4;inti;}data;12.4小结