C语言位操作运算详解.docx

C语言位操作运算详解.docx

ID:58637095

大小:21.47 KB

页数:7页

时间:2020-10-17

C语言位操作运算详解.docx_第1页
C语言位操作运算详解.docx_第2页
C语言位操作运算详解.docx_第3页
C语言位操作运算详解.docx_第4页
C语言位操作运算详解.docx_第5页
资源描述:

《C语言位操作运算详解.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、位运算程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作位操作的优势·位运算是一种底层的运算,往往比我们普通的运算要快上许多许多·位运算是最高效而且占用内存最少的算法操作,执行效率非常高·位运算操作的是二进制数,会拥有一些二进制的特性,在实际问题可以方便运用·位运算只需较低的空间需求·位运算使用能使程序变得更加简洁和优美·位运算可以表示一些状态集合运算符号下面的a和b都是整数类型,则:含义C语言按位与a&b按位或a

2、b按位异或a^b按位取反~a左移a<>b无符号右移优先级

3、C语言中位运算符之间,按优先级顺序排列为优先级符号1~2<<、>>3&4^5

4、6&=、^=、

5、=、<<=、>>=概念简介以及技巧本文会以C语言的交互环境来做代码演示常见的二进制位的变换操作and运算&·判断奇偶数对于除0以外的任意数x,使用x&1==1作为逻辑判断即可if(x&1==1){}·判断某个二进制位是否为1比如第7位,0x40转到二进制是01000000,代表第7位是1.if(n&0x40){//TODO:添加你要处理的代码}·字节读取(x>>0)&0xff/*获取第0个字节*/(x>>8)&0xff/*获取第1个字节*/(x>

6、>16)&0xff/*获取第2个字节*/(x>>24)&0xff/*获取第3个字节*/·判断一个数是不是22的指数boolisPowerOfTwo(intn){if(n<=0)returnfalse;return(n&(n-1))==0;}·取余//得到余数intYu(intnum,intn){inti=1<

7、把B的第三位数字设置为1,则B为0000000000000100,设置完之后再把A、B求与,其结果若为0,说明A的第三位为0,其结果为1,说明A的第三位为1.同理:若要获得A的第五位,就把B设置为0000000000010000,之后再求与。通常在我们的程序中,数字B被称为掩码,其含义是专门用来测试某一位是否为0的数值。·统计二进制中1的个数利用x=x&(x-1),会将x用二进制表示时最右边的一个1变为0,因为x-1会将该位变为0.intCount(intx){intsum=0;while(x){sum++;x=x&(x-1);}retu

8、rnsum;}or操作·生成组合编码,进行状态压缩当把二进制当作集合使用时,可以用or操作来增加元素。合并编码在对字节码进行加密时,加密后的两段bit需要重新合并成一个字节,这时就需要使用or操作。·求一个数的二进制表达中0的个数intGrial(intx){intcount=0;while(x+1){count++;x

9、=(x+1);}returncount;}xor操作·两个整数交换变量名voidswap(int&a,int&b){a^=b;b^=a;a^=b;}·判断两个数是否异号intx=-1,y=2;boolf=((x^y)<0

10、);//trueintx=3,y=2;boolf=((x^y)<0);//false·数据加密将需要加密的内容看做A,密钥看做B,A^B=加密后的内容C。而解密时只需要将C^密钥B=原内容A。如果没有密钥,就不能解密!#include#include#include#defineKEY0x86intmain(){charp_data[16]={"HelloWorld!"};charEncrypt[16]={0},Decode[16]={0};inti;for(i=0;i

11、n(p_data);i++){Encrypt[i]=p_data[i]^KEY;}for(i=0;i

12、的数·找出没有重复的数intfind(int[]arr){inttmp=arr[0];for(inti=1;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。