C语言程序设计视频教程及习题解析 徐红波 第12章.ppt_第1页
C语言程序设计视频教程及习题解析 徐红波 第12章.ppt_第2页
C语言程序设计视频教程及习题解析 徐红波 第12章.ppt_第3页
C语言程序设计视频教程及习题解析 徐红波 第12章.ppt_第4页
C语言程序设计视频教程及习题解析 徐红波 第12章.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C程序设计,讲师:徐红波 Email: x_h_,第12章 位运算,第10章介绍的指针运算和本章将介绍的位运算很适合于编写系统软件的需要,是C语言的重要特色。在计算机用于检测和控制领域中要用到位运算的知识,因此应当学习和掌握本章的内容。 所谓位运算是指进行二进制位的运算。在系统软件中,常要处理二进制位的问题。例如,将一个存储单元中的各二进制位左移或右移一位,两个数按位相加等。C语言提供位运算的功能,与其他高级语言相比,它显然具有很大的优越性。,12.1 位运算符和位运算,C语言提供如下表所列出的位运算符 说明: (1)位运算符中除以外,均为二目(元)运算符,即要求两侧各有一个运算量。 (2)运

2、算量只能是整型或字符型的数据,不能为实型数据。,12.1.1 “按位与”运算符( b=ba; a=ab;,12.1.4 “取反”运算符(),是一个单目(元)运算符,用来对一个二进制数按位取反,即将0变1,将1变0。,12.1.5 左移运算符(),用来将一个数的各二进制位全部左移若干位。高位左移后溢出,舍弃。 左移1位相当于该数乘以2。左移比乘法运算快得多,有些C编译程序自动将乘2的运算用左移一位来实现,将称2n的幂运算处理为左移n位。,12.1.6 右移运算符,用来将一个数的各二进制位全部右移若干位,移到右端的低位被舍弃。 在右移时,需要注意符号位问题。对无符号数,右移时左边高位移入0;对于有

3、符号的值,如果原来符号位为0(该数为正),则左边也是移入0。如果符号位原来为1(即负数),则左边移入0还是1,要取决于所用的计算机系统。有的系统移入0,有的系统移入1。移入0的称为“逻辑右移”,即简单右移;移入1的称为“算术右移”。,12.1.7 位运算赋值运算符,位运算符与赋值运算符可以组成复合赋值运算符,例如: unsigned b:6; unsigned c:4; unsigned d:4; int i; data;,关于位段的定义和引用,有几点要说明:,(1)位段成员的类型必须指定为unsigned或int类型。 (2)某一位段可以从另一个存储单元开始存放。 (3)一个位段必须存储在同

4、一存储单元中,不能跨两个单元。如果第一个单元空间不能容纳下一个位段,则该空间不用,而从下一个单元起存放该位段。 (4)可以定义无名字段。 (5)位段的长度不能大于存储单元的长度,也不能定义位段数组。 (6)位段可以用整型格式符输出。 (7)位段可以在数值表达式中引用,它会被系统自动地转换成整型数。,习题,12.1 编写一个函数getbits,从一个16位的单元中取出某几位(即该几位保留原值,其余位为0)。函数调用形式为getbits(value, n1, n2),value为该16位(2个字节)中的数据值,n1为欲取出的起始位,n2为欲取出的结束位,例如:getbits(0101675,5,8

5、)表示对八进制101675这个数,取出它的从左面起第5位到第8位。 12.4 编写一函数用来实现左右循环移位。函数名为move,调用方法为move(value, n),其中value为要循环位移的数,n为位移的位数。例如,n0为右移。n=4表示要右移4位;n=-3表示要左移3位。,12.1,#include stdafx.h“ unsigned short getbits(unsigned short value,int n1,int n2) return (unsigned short)(value(16-(n2-n1+1); int main(int argc, char * argv) printf(%xn,getbits(0101675,5,8); return 1; ,12.4,#include stdafx.h unsigned short move(unsigned short value,int n) unsigned short a,b; if(n(16-(-n); else if(n0) a=valuen; b=value(16-n); return a|b; int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论