




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章位运算
南因号船现代我有技东中芯
2004年5月制作
本章主要内容
■c语言既是一种高级语言,广泛应用于应用软
件的开发和程序设计,同时又是一种低级语言,
可以用于系统软件的开发和程序设计,如自动
控制系统中的过程控制、参数检测、数据通讯
等控制程序,都可以综合利用c语言中的指针
操作、位运算和位段技术来实现。
本章介绍位运算的基本形式和常用运算符,并
简要介绍位段的概念。位运算的深入学习,应
该在《计算机原理》和《汇编语言程序设计》
课程中进行。
莆田学院现代教育技术中心2004年5月
、位运算符和位运算
■位运算概述
所谓“位运算”,是指按二进制位进行运算。
•位运算的特点:运算按二进制逐位进行——没
有借彳立和接彳立。
“位运算量:整型(int,short,unsiged,long)/字
符型(以补码/ASCII码形式存储),不可为实
型。
•位运算符:P298表12.1
&1A〜«»
莆田学院现代教育技术中心2004年5月
、位运算符和位运算
位运算符还可与赋值运算符相结合,进行位运
算赋值操作。如:
a&=b等价于a=a&b
a»=b等价于a=a»b
■注意:位运算时的数据类型为char/int,分析
时要化为二进制形式,但在程序中书写及输出
结果时仍为char/int。
莆田学院现代教育技术中心2004年5月
位运算符的使用
按位与&(均为1时方为1)
【例一】计算
main()010000(a)
&011000(b)
010000
unsignedchara,b;
printf(Tnteraandb:");001010(a)
&010000(b)
u,5
scanf(%o,%o,&a,&b);000000
printf(ua&b=%o\n55,a&b);
)
Enteraandb:20,30Enteraandb:12,20
a&b=20a&b=0
莆田学院现代教育技术中心2004年5月
位运算符的使用
按位或|(均为0时方为0)
【例二】计算
main()010000(a)
I011000(b)
011000
unsignedchara,b;
printf(Tnteraandb:");001010(a)
I010000(b)
u,5
scanf(%o,%o,&a,&b);011010
printf(ua|b=%o\n,,,a|b);
)
Enteraandb:20,30Enteraandb:12,20
a|b=30a|b=32
莆田学院现代教育技术中心2004年5月
位运算符的使用
按位异或八(二者相异方为1)
【例三】以下程序的功能是将。数据的低4位取反。
#include<stdio.h>
main()计算
(00111001(a)
unsignedchara=0x39,b=人00001111(b)
a=aAb;00110110
printf("%x\n",a);
答案:OxOf
莆田学院现代教育技术中心2004年5月
位运算符的使用
按位取反~(各位反转)
【例四】计算
main()~a:
(补码:11111100
chara=3;原码:10000100
intb=10;〜b:
printf(''~a=%d,~b=%d\rT,~a「补码
)原码:10001011
结果:〜a=-4,〜b=Tl
莆田学院现代教育技术中心2004年5月
位运算符的使用
・左移运算«
a«n将a中各位向左移n位,右端补0,高位溢出丢弃。
例:
【例五】以下程序的运行结果是_____O
main()
(
unsignedinta=0x3ef,b;
b=a«2;
printf("%x,%x\n",a,b);
}
A)3ef,fbB)3ef,fbcC)fbc,3efD)fbc,fbc
莆田学院现代教育技术中心2004年5月
位运算符的使用
■左移运算«
计算
【例六】以下程序的运行结5已知:0x1f5为111110101
main()且:Ta为1100
・・・2<<3为1100000
inta=12,b;111110101
b=0x1f5&a«3;&001100000
printf("%d,%d\n"Ja,b);
}001100000=96
结果:12,96
莆田学院现代教育技术中心2004年5月
位运算符的使用
■右移运算»
a»n将a中各位右移n位,溢出则舍弃。
左端----
»a为正数时(符号位为0),填0;
aa为负数时(符号位为1),填。或填1与系统有关
填0(逻辑右移)
填1(算术右移)TC使用算术右移
莆田学院现代教育技术中心2004年5月
位运算符的使用
・右移运算»
【例七】以下程序的运行结果是_____
main()
(
inta=9,b=-9;
printf("%d,%d",a»2,b»2);
}
结果:2,-3
(-9的补码:1111111111110111,
右移后为1111111111111101)o
莆田学院现代教育技术中心2004年5月
应用示例
①从整数a最右端am=10n=3
[「IITIIIIllIIII[III
第m个位置开始[15|14|13|12|10|9|817|6|5|4|3|2|“0|
取该位开始右面b=a»(10-3+1)S!a»8
n位。jo|。|o|o|o|o|o|0I15I14I13I12I11I10I9|8|
算法如下:
-O«3
b=a»(m-n+1)I」「I」V「1”T”「I”。1。1。1
c=~(~O«n)c=*(*O«n)=~(*O«3)
_L------1
d=b&c「0|0|0|U|0巨|0|0|0|0|0|0|011I1I1I
注:位自右向左d=b&c
从0开始编号|o|o|o|o|o|o|o|o|o|o|o|u|u|io|9|8|
莆田学院现代教育技术中心2004年5月
应用示例
莆田学院现代教育技术中心2004年5月
二、位段
c语言允许在一个结构体中以位为单位来指定
其成员所占内存长度。这种以位为单位的成员
称为“位段”。
莆田学院现代教育技术中心2004年5月
示例
structdata
(
inti;/*非位段*/
unsignedinta:3;/*占3位*/
unsignedintb:5;/*占5位*/
unsignedint:3;/*无
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年双下肢静脉炎护理试题
- 推销实务试题及答案
- 2025年投资不干预不管理协议书
- 2025年区域基础设施建设策划与投资合作协议
- 2025年策划共同投资设立子公司协议书
- 2025年双方授权代付协议书样本
- 企业法律合规管理的背景意义及必要性
- 企业的商业合作与法律约束
- 基于大数据的产教融合效率提升方法
- 高效粮食储存技术的创新与发展
- 核医学检查技术知到智慧树章节测试课后答案2024年秋山东第一医科大学
- 分泌性中耳炎-3
- 铁路词汇中英文对照
- 220kV架空送电线路铁塔拆除施工方案
- IATF16949外审准备和审核要点
- 银行支行装饰装修工程施工组织设计方案
- 实习五病例对照研究课件
- 部编语文二年级语文下册词语表(共8页)
- 室间质评汇总分析报告
- 斯特瓦尔特定理及应用含答案
- KP高压电缆附件样本
评论
0/150
提交评论