版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1第11章位运算位运算简介位赋值运算符位段应用举例23.位运算有:
“按位与”运算“按位或”运算“异或”运算“取反”运算左移运算右移运算11.1位运算简介
1.位运算和指针一样,都是C语言的重要特色。
2.位运算的概念:
所谓位运算,是指进行二进制位的运算。例如:将一个存储单元中的各二进制位左移或右移1位,两个数按位相加等。位运算符含义举例&按位与a&b|按位或a|b∧按位异或a∧b~按位取反~a<<左移a<<1>>右移b>>23
位赋值运算符是位运算符与赋值运算符的结合。位赋值运算符含义举例等同于&=位与赋值a&=ba=a&b|=位或赋值a|=ba=a|b∧=位异或赋值a∧=ba=a∧b<<=左移赋值a<<=ba=a<<b>>=右移赋值a>>=ba=a>>b11.2位赋值运算符4
C语言允许在一个结构体中以位为单位来指定其成员所占的内存长度,这种以位为单位的成员称为“位段”或“位域”。“位段”或“位域”是一种特殊的结构体成员。
11.3位段定义的一般格式如下:struct结构体名{
类型成员1:长度;
类型成员2:长度;…
类型成员n:长度;};其中,冒号前的成员为位段,冒号后的长度表示存储位段需要占用字节的位数。5例如:structdevice{unsigneda:1;unsignedb:2;unsignedc:4;shortx;floaty;}data;11.3位段结构体变量data包含5个成员,它们分别是a、b、c、x、y。其中,a、b、c为位段,分别占用1位、2位、4位,即a、b、c共占用7位。这样,用一个字节就可以存储这3个位段。x、y为基本类型的成员,分别需要2个、4个字节存储。因此,结构体变量data需要占用7个字节的内存单元。上图给出了结构体变量data的每个成员在内存中的分配情况。
14211个字节2个字节4个字节xycba1632610.4应用举例
程序:main(){intnum,bit,i;unsignedtest=0x8000;printf("inputmum:");scanf("%d",&num);printf("binaryof%xis:",num);for(i=1;i<=16;i++){bit=((num&test)==0)?0:1;printf("%d",bit);test>>=1;}}
运行结果:inputnum:12345↙binaryof3039is:0011000000111001例1输出一个整数的二进制形式。710.4应用举例
题目分析:①利用某位与1进行异或可将该位翻转的特性,设置一个掩码mask,mask中的数据最好不能从键盘上直接输入,以避免mask碰巧与源码(输入的字符串)相同、进行按位“异或”运算、结果为0、无法进行加密和解密的情况(如"123abc"∧"123abc"=0)。为此,查ASCII字符编码一览表(附录A),选取mask="\x14\x15"。②上面的\x14和\x15的十进制分别是20和21,分别代表¶和§,它们无法从键盘上直接输入。其二进制分别为:0000000000010100和0000000000010101。③编写strencrypt函数。该函数有两个形参:一个是源码——要加密/解密的字符串,一个是掩码——加密使用的mask。使用循环结构将需要加密/解密的字符串不断与掩码mask的对应二进制位进行多轮次的按位“异或”运算,直到加密/解密的字符串结束,完成字符串的加密/解密。
例2编写一函数,实现字符串(例如用户使用的密码)的加密和解密。810.4应用举例
程序:#include"stdio.h"#defineMASK"\x14\x15" /*定义一个加密/解密的mask*/char*strencrypt(charstr[],charmask[])/*对字符串进行加密/解密*/{inti,j;for(i=0;str[i]!=0;) /*循环到加密/解密字符串结束*/for(j=0;str[i]!=0&&mask[j];j++,i++)/*循环到加密/解密字符串或mask字符串结束*/{str[i]=str[i]^mask[j]; /*按位“异或”*/}return(str);}main(){charstr[80];printf("Inputastring:");scanf("%s",str); /*输入一个要加密/解密的字符串*/strencrypt(str,MASK); /*加密*/printf("Encryptstringis:%s\n",str); /*输出加密后的字符串*/strencrypt(str,MASK); /*解密*/printf("ReEncryptstringis:%s\n",str); /*输出解密后的字符串*/}运行结果:Inputastring:ac#@^
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 5《水能溶解多少物质》说课稿-2024-2025学年科学三年级上册科教版
- 2025山林租赁合同标准范本
- 2025企业管理资料协商解除劳动合同协议书文档范本
- 6《平行四边形的面积》(说课稿)-2024-2025学年五年级上册数学人教版
- 《6~9的认识》说课稿-2024-2025学年一年级上册数学人教版
- 2025中小学校合同管理制度
- 2023三年级语文上册 第五单元 习作例文与习作说课稿 新人教版
- 2 我们有精神 说课稿-2023-2024学年道德与法治一年级下册统编版001
- 2024-2025学年新教材高中生物 第六章 细胞的生命历程 第3节 细胞的衰老和死亡(2)说课稿 新人教版必修1
- Unit 2 Understanding each other Integrated skills (I) 说课稿-2023-2024学年高中英语译林版(2020)选择性必修第四册
- 学校安全工作计划及行事历
- 《GMP基础知识培训》课件
- 2025届江苏省无锡市天一中学高一上数学期末质量检测试题含解析
- 数学家华罗庚课件
- 贵州茅台酒股份有限公司招聘笔试题库2024
- 《人工智能基础》课件-AI的前世今生:她从哪里来
- 《纳米技术简介》课件
- 血液透析高钾血症的护理查房
- 思政课国内外研究现状分析
- 2024年青海省西宁市选调生考试(公共基础知识)综合能力题库带答案
- HYT 235-2018 海洋环境放射性核素监测技术规程
评论
0/150
提交评论