位赋值运算符.pptVIP

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

* 第12章 位运算 位运算 位赋值运算符 位段 应用举例 3. 位运算有: 12.1 位运算 1.位运算和指针一样,都是C语言的重要特色。 2.位运算的概念: 所谓位运算,是指进行二进制位的运算。 例如:将一个存储单元中的各二进制位左移或右移1位,两个数按位相加等。 b2 右移 a1 左移 ~a 按位取反 ~ a∧b 按位异或 ∧ a|b 按位或 | ab 按位与 举例 含义 位运算符 说明: (1)位运算量a,b只能是整型或字符型数据,不能是实型数据。 (2)位运算符中除按位取反运算符~为单目运算符外,其它均为双目运算符。 12.1 位运算 12.1.1 位逻辑运算符 1. 按位与运算符 运算规则:如果参加运算的两个运算量的相应位都是1,则该位的结果值为1,否则为0。 例如: ab────── 即ab=0x18 12.1 位运算 12.1.1 位逻辑运算符 2.按位或运算符| 运算规则:如果两个运算量的相应位都是0,则该位的结果值为0,否则为1。 例如: ab───── |:即a|b=0xfa 12.1 位运算 12.1.1 位逻辑运算符 3.按位异或运算符∧ 运算规则:如果两个运算量的相应位不同,则该位的结果值为1,否则为0。 例如: ab───── ∧即a∧b=0xe2 12.1 位运算 12.1.1 位逻辑运算符 4.按位取反运算符~ 运算规则:对一个运算量的每一位都取反,即将1变为0,0变为1。 例如: a:───── ~a即~a=0x85 12.1 位运算 12.1.1 位逻辑运算符 0 0 0 1 1 1 1 1 0 1 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 0 0 0 ~b ~a a∧b a|b ab b a 位逻辑运算规则 12.1 位运算 12.1.1 位逻辑运算符 5.位逻辑运算符的用途 (1)判断一个数据的某位是否为1。 (2)屏蔽掉一个数据中的某些位。 (3)清零。 (4)保留若干位。 (5)把一个数据的某位置为1。 (6)把一个数据的某位翻转,即1变为0,0变为1。 12.1 位运算 12.1.2 移位运算符 1. 左移运算符 运算规则:对左边的运算量的每一位全部左移右边运算量表示的位数。 例如:a2表示将a的各位依次向左移2位,a的最高2位移出去舍弃,空出的低2位以0填补。 a2: a: 12.1 位运算 12.1.2 移位运算符 1.右移运算符 运算规则:对左边的运算量的每一位全部右移右边运算量表示的位数,低位被移出去舍弃,空出的高位补0还是补1,分两种情况: (1)对无符号数进行右移时,空出的高位补0。这种右移称为逻辑右移。 (2)对带符号数进行右移时,空出的高位以符号位填补。即正数补0,负数补1。这种右移称为算术右移。 12.2 位赋值运算符 位赋值运算符是位运算符与赋值运算符的结合。 a=ab a=b 右移赋值 = a=ab a=b 左移赋值 = a=a∧b a∧=b 位异或赋值 ∧= a=a|b a|=b 位或赋值 |= a=ab a=b 位与赋值 = 等同于 举例 含义 位赋值运算符 位赋值运算符 12.3 位段 C语言允许在一个结构体中以位为单位来指定其成员所占的内存长度,这种以位为单位的成员称为“位段”或“位域”。“位段”或“位域”是一种特殊的结构体成员。 定义的一般格式为: struct结构体名 { 类型 成员1: 长度; 类型 成员2: 长度; … 类型 成员n: 长度; }; 其中,冒号前的成员为位段,冒号后的长度表示存储位段需要占用字节的位数。 例如: struct device { unsigned a:1; unsigned b:2; unsigned c:4; int x; float y; }data; 结构体变量data包含5个成员,它们分别是a,b,c,x,y。 其中,a、b、c为位段,分别占用1位、2位、4位,即a、b、c共占用7位。这样,用一个字节就可以存储这三个位段。x、y为基本类型的成员,分别需要2个、4个字节存储。因此,结构体变量data需

文档评论(0)

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

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

1亿VIP精品文档

相关文档