c语言程序设计(徐贞如) 第11章 位运算.pptVIP

c语言程序设计(徐贞如) 第11章 位运算.ppt

  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文档。上传文档
查看更多
尚辅网 尚辅网 第11章 位运算 11.1位运算的基本概念 由于C语言是为研发系统软件而设计的,为此它提供了类似于汇编语言的一些功能,可实现将标志状态从标志字节中分离出来的位运算功能。正是因为C语言的这种作为高级语言,又具有低级语言的的功能,使得它的应用非常广泛。 所谓位运算是指,按二进制位进行的运算。为了节省内存空间,在系统软件中常将多个标志状态简单地组合在一起,存储到一个字节(或字)中。这也正是在系统软件中常常需要处理二进制问题的原因。 11.1.1 运算符及其位运算 1.运算符 C语言提供的位运算符见表11-1 2.位运算 (1)按位与() 格式:xy 规则:参加运算的两个操作数,按位进行与运算,若对应的二进制位均为1时,该位运算的结果为1,否则该位为0。 主要用途:取(或保留)1个数的某(些)位,其余各位置0。 例如:取的后4位,其余各位置0。 方法: 构造一个数它的后4位是1)行按位与()运算。 ) ──────── (2)按位或(|) 格式:x|y 规则:对应位均为0时才为0,否则为1 主要用途:将1个数的某(些)位置1,其余各位不变。 例如:最后2为置1,其余各位不变。 方法: 构造一个二进制数0000011(它的后2位是1)行按位或(|)。 |) ──────── (3)位异或(^) 格式:x^y 规则:对应位相同时为0,相异时为1。 主要用途:使1个数的某(些)位翻转(即原来为1的位变为0,为0的变为1),其余各位不变。 例如:的后4位翻转,其余各位不变。 方法: 构造一个它的后4位是1)行位异或(^)运算。 ^) ────────(4)按位取反──~ 格式:~x 规则:各位翻转,即原来为1的位变成0,原来为0的位变成1。 主要用途:间接地构造一个数,以增强程序的可移植性。 例如,~0000101~) ──────── (5)按位左移── 格式:x 位数 规则:使操作数的各位左移,低位补0,高位溢出 例如,52=20 )──────── (6)按位右移── 格式:x位数 规则:使操作数的各位右移,移出的低位舍弃;高位: 82=2 )──────── ①对无符号数和有符号中的正数,补0; ②有符号数中的负数,取决于所使用的系统:补0的称为“逻辑右移”,补1的称为“算术右移”。 说明: (1)操作数和运算所需要的参数,如“位数”等,都必须是整型或字符型数据。除按位取反为单目运算符外,其余均为双目运算符。 (2)参与运算时的操作数都必须首先转换成二进制形式,然后再执行相应的按位运算。 例如,52=20:0000101 →20 2=5→ 11.2.2 位运算举例 [例题11.1] 输入一个正整数赋给int型变量i,然后从该变量的右端(最低位)开始的第3位起连续取4位输出。(即输出第3~6位构成的数,从最低位为0号编号) 解题思路: (1)先将变量i右移3位,将3~6位移到低4位上。即:i3。 (2)产生1个低4位为1、其余各位为0的整数r。可用以下式子实现: r=~(~04) 上式的运算步骤如下: 000000000 ~011111111 ~0411110000 ~(~04)00001111 (3)用r与i3的结果进行按位与运算。 /*例题原代码文件名:LX11_1.C*/ main() { int i, r; printf(“Please input a int number: ”); scanf(“%d”,,i); i=3; /*右移3位,将3~6位移至低4位*/ r = ~(~04)

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档