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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
掌握位运算的类及其操作

第十章 位运算 10.1 位运算符和位运算 10.1.1 与运算 10.1.2 或运算 | 10.1.3 异或运算 ^ 10.1.4 求反运算 ~ 10.1.5左移运算 左移运算符“”功能把“”左边的运算数的二进制位全部左移若干位,由“”右边的数指定移动的位数,高位丢弃,低位补0。 例如:a4 指把a的各二进制位向左移动4位,若a=0000 0011(十进制3),左移4位后为0011 0000(十进制48)。 当不发生溢出时,一个数据每左移1 位相当于乘以2,左移2 位相当于乘以4 10.1.6右移运算 右移运算符“”功能是把“”左边的运算数的各二进制位全部右移若干位,“”右边的数指定移动的位数。对于有符号数,在右移时,符号位将随同移动。当为正数时, 最高位补0;当为负数时,符号位为1,最高位是补0还是补1 取决于编译系统的规定,Turbo C和很多系统规定补1。 说明: (1)复合赋值运算符:除按位取反运算外,其余5个位运算符均可与赋值运算符一起构成复合赋值运算符,例如=、|=、^=、=、=。如a=b 相当于 a=ab。 (2)不同长度数据间的位运算:当不同长度的数据进行位运算时(如ab,a为long型,b为int型),系统会将二者按右端对齐,如果b为正数,则左侧16位补0;如果b为负数,左侧16位补1;如果b为无符号整数,则左侧补0。 (3)位运算符“、|、~”不同于逻辑运算符“、||、!”,位运算按二进制位相与,结果为数值;逻辑运算符操作数整体运算,结果为逻辑值真或假; 10.2 位域 10.2.2、位域的引用 * 掌握位运算的类型及其操作 理解位域的概念、定义和引用方法 C语言提供的位运算操作符,具有直接操作二进制位的能力,位运算是指二进制位的运算,操作数以二进制补码形式按位参与运算。运算符中除了取反运算~外,其余都是二元运算符,且操作数只能是整型或字符型数据,不能是实型数据 按位与运算符的功能是参与运算的两数各对应的二进制位相与。只有对应的两个二进制位都为1时,结果位才为1,否则为0。 例如: 106可写算式如下: 0000 1010 (10的二进制补码) 0000 0110 (6的二进制补码) 0000 0010 (2的二进制补码) 按位与运算通常用来对某些位清0 按位或运算符“|”的功能是参与运算的两数各对应的二进制位相或。只要对应的二进制位中有一个为1,结果位就为1。 例如:10|6可写算式如下: 0000 1010 | 0000 0110 0000 1110 (十进制为14) 按位或运算通常用来对某些位置1 按位异或运算符“^”功能是参与运算的两数各对应的二进制位相异或,当对应的二进制位相异时,结果为1。 例如:10^6可写成算式如下: 0000 1010 ^ 0000 0110 0000 1100 (十进制为12) 求反运算符~为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进制位按位求反。 例如:~10的运算为: ~ (0000 1010) 结果为: 1111 0101 应当注意的是~的优先级较高,对~ab,是先进行~a运算,再进行运算。 例如:a=10,b=-10; a2 10的补码为0000 1010 右移2位后为0000 0010 b2 (-10的补码为1111 0110 右移2位后为 1111 1101 当不发生溢出时,一个数据每右移1 位相当于除以2,右移2 位相当于除以4 “位域”是把一个字节中的二进制位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作,这样就可以把几个不同的对象用一个字节的二进制位来表示。利用位域能够用较少的位数存储数据。 位域是一种结构体,允许以位为单位来指定成员所占用的内存长度,其定义和结构体定义相仿,形式为: struct 位域结构名 { 位域列表; }; 10.2.1 位域结构体及变量的定义 其中位域表示为:类型说明符 位域名:长度,位域的类型只能是unsigned或int类型,长度不能超过一个存储单元的长度 注:无域名的位域不可用;不指明长度则表示长度为一个存储单元;长度为0的域称为空域,表示下面的位域从下一单元开始存放。 一、位域结构体的定义 二、位域变量的定义及说明 位域变量的说明与结构体变量说明的方式相同。可采用先定义后说明,同

文档评论(0)

woai118doc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档