1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C位操作

c++按位操作符 signed u 顾名思义,按位运算符允许按照位来操作整型变量。可以把按位运算符应用于任意 和 nsigned整型,包括char类型。但是,它们通常应用于不带符号的整型。 这些运算符的一个常见应用是在整型变量中使用单个的位存储信息。例如标记,它用于描述二进 制状态指示符。可以使用一个位来描述有两个状态的值:开或关、男或女,真或假。 也可以使用按位运算符处理存储在一个变量中的几个信息项。例如,颜色值常常记录为三个八位 值,分别存储颜色中红、绿和蓝的强度。这些常常保存到四字节变量中的三个字节。第四个字节 也不会浪费,包含表示颜色透明度的值。显然,要处理各个颜色成分,需要从变量中分离出各个 字节,按位运算符就可以做到这一点。 再看另外一个例子,假定需要记录字体的信息,那么,只要存储每种字体的样式和字号,以及字 体是黑体还是斜体,就可以把这些信息都存储在一个二字节的整型变量中,如图3-1所示。 图3-1 把字体数据存储在2个字节中 —— 1 0 可以使用一位来记录字体是否为斜体 表示斜体, 表示一般。同样,用另一位来指定字 256 5 体是否为黑体。使用一个字节可以从多达 种不同的样式中选择一个,再用另外 位记录最 32 16 多 磅的字号。因此,在一个 位的字中,可以记录四个不同的数据项。按位运算符提供了 16 访问和修改整数中单个位和一组位的便利方式,能方便地组合和分解一个 位的字。 3.3.1 移位运算符 移位运算符可以把整型变量中的内容向左或向右移动指定的位数。移位运算符和其他按位运算符 一起使用,可以获得前面描述的结果。运算符把位向右移动,运算符把位向左移动,移 出变量两端的位被舍弃。 所有的按位操作都可以处理任何类型的整数,但本章的例子使用 16位的变量,使例子较为简单。 用下面的语句声明并初始化一个变量number: unsigned short number 16387U; 如第2章所述,不带符号的字面量应在数字的最后添加字母U或u。 在下面的语句中,对这个变量的内容进行移位,并存储结果: unsigned short result number 2; //Shift left two bit positions 移位运算符的左操作数是要移位的值,右操作数指定要移动的位数。图3-2列出了该操作的过 程。 图3-2 移位运算 从图3-2可以看出,把数值 16387向左移动两位,得到数值 12。数值的这种剧烈变化是舍弃 高位数字的结果。 把数值向右移动,可以使用下面的语句: result number 2; //Shift right two bit positions 16387 4096 4 把数值 向右移动两位,得到数值 。向右移动两位相当于使该数值除以 。 只要没有舍弃位,向左移动n位就相当于把该数值乘以2的n次方。换言之,就等于把该数值 n 乘以2 。同样,向右移动n位就相当于把该数值除以2的n次方。但要注意,变量number 向左移位时,如果舍弃了重要的位,结果就不是我们希望的那样了。可是,这与乘法运算并没有 不同。如果把2字节的数值乘以4,就会得到相同的结果,所以向左移位和相乘仍是等价的。出 现问题的原因是相乘的结果超出了2字节整数的取值范围。 op 如果需要修改原来的值,可以使用 赋值运算符。在这种情况下,可以使用 或 运 算符。例如: number 2

文档评论(0)

yaocen + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档