掌握位运算的类型及其操作.ppt

掌握位运算的类型及其操作.ppt

ID:52042173

大小:61.50 KB

页数:15页

时间:2020-03-31

掌握位运算的类型及其操作.ppt_第1页
掌握位运算的类型及其操作.ppt_第2页
掌握位运算的类型及其操作.ppt_第3页
掌握位运算的类型及其操作.ppt_第4页
掌握位运算的类型及其操作.ppt_第5页
资源描述:

《掌握位运算的类型及其操作.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第十章位运算掌握位运算的类型及其操作理解位域的概念、定义和引用方法10.1位运算符和位运算C语言提供的位运算操作符,具有直接操作二进制位的能力,位运算是指二进制位的运算,操作数以二进制补码形式按位参与运算。运算符中除了取反运算~外,其余都是二元运算符,且操作数只能是整型或字符型数据,不能是实型数据10.1.1与运算&按位与运算符"&"的功能是参与运算的两数各对应的二进制位相与。只有对应的两个二进制位都为1时,结果位才为1,否则为0。例如:10&6可写算式如下:00001010(10的二进制补码)&00000110(6的二进制补码)00000010(2的二进制补码)按位与运算

2、通常用来对某些位清010.1.2或运算

3、按位或运算符“

4、”的功能是参与运算的两数各对应的二进制位相或。只要对应的二进制位中有一个为1,结果位就为1。例如:10

5、6可写算式如下:00001010

6、0000011000001110(十进制为14)按位或运算通常用来对某些位置110.1.3异或运算^按位异或运算符“^”功能是参与运算的两数各对应的二进制位相异或,当对应的二进制位相异时,结果为1。例如:10^6可写成算式如下:00001010^0000011000001100(十进制为12)10.1.4求反运算~求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进

7、制位按位求反。例如:~10的运算为:~(00001010)结果为:11110101应当注意的是~的优先级较高,对~a&b,是先进行~a运算,再进行&运算。10.1.5左移运算<<左移运算符“<<”功能把“<<”左边的运算数的二进制位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。例如:a<<4指把a的各二进制位向左移动4位,若a=00000011(十进制3),左移4位后为00110000(十进制48)。当不发生溢出时,一个数据每左移1位相当于乘以2,左移2位相当于乘以410.1.6右移运算>>右移运算符“>>”功能是把“>>”左边的运算数的各二进制位全

8、部右移若干位,“>>”右边的数指定移动的位数。对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0;当为负数时,符号位为1,最高位是补0还是补1取决于编译系统的规定,TurboC和很多系统规定补1。例如:a=10,b=-10;a>>210的补码为00001010右移2位后为00000010b>>2(-10的补码为11110110右移2位后为11111101当不发生溢出时,一个数据每右移1位相当于除以2,右移2位相当于除以4说明:(1)复合赋值运算符:除按位取反运算外,其余5个位运算符均可与赋值运算符一起构成复合赋值运算符,例如&=、

9、=、^=、<<=、>>=。如

10、a&=b相当于a=a&b。(2)不同长度数据间的位运算:当不同长度的数据进行位运算时(如a&b,a为long型,b为int型),系统会将二者按右端对齐,如果b为正数,则左侧16位补0;如果b为负数,左侧16位补1;如果b为无符号整数,则左侧补0。(3)位运算符“&、

11、、~”不同于逻辑运算符“&&、

12、

13、、!”,位运算按二进制位相与,结果为数值;逻辑运算符操作数整体运算,结果为逻辑值真或假;10.2位域“位域”是把一个字节中的二进制位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作,这样就可以把几个不同的对象用一个字节的二进制位来表示。利

14、用位域能够用较少的位数存储数据。位域是一种结构体,允许以位为单位来指定成员所占用的内存长度,其定义和结构体定义相仿,形式为:struct位域结构名{位域列表;};10.2.1位域结构体及变量的定义其中位域表示为:类型说明符位域名:长度,位域的类型只能是unsigned或int类型,长度不能超过一个存储单元的长度注:无域名的位域不可用;不指明长度则表示长度为一个存储单元;长度为0的域称为空域,表示下面的位域从下一单元开始存放。一、位域结构体的定义二、位域变量的定义及说明位域变量的说明与结构体变量说明的方式相同。可采用先定义后说明,同时定义说明或者直接说明三种方式。例如:str

15、uctdata{inta:8;intb:2;intc:6;inti;}x;说明x为data类型的变量,共占四个字节。其中位域a占8位,位域b占2位,位域c占6位,位域i占两个字节。abci82616一个位域必须存储在同一个存储单元中,不能跨两个存储单元。如果一个存储单元所剩空间不够存放一个位域时,系统自动从下一单元存放该位域。也可以使用空域使某位域从下一单元开始存放。例如:structdata{unsigneda:4;unsigned:0;unsignedb:5;unsignedc:4;inti;}x;10.2.2

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

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

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